A Brief History of String Theory: From Dual Models to M-Theory