flexCWM: A Flexible Framework for Cluster-Weighted Models