From Federated to Fog Learning: Distributed Machine Learning over Heterogeneous Wireless Networks