Macroeconomic Fluctuations and Heterogeneous Agents