Handling Data Heterogeneity in Federated Learning via Knowledge Distillation and Fusion