Tackling Data Heterogeneity in Federated Learning with Class Prototypes