Fault-Tolerant and Energy-Efficient Generic Clustering Protocol for Heterogeneous WSNs