make MixtureModel a parametrized subtype of Distribution

* Since a MixtureModel is a type of distribution, every MixtureModel is now a subtype Distribution with the correct VariateForm and ValueSupport. This is an update for PR #208
* to implement this, I added new utility functions: variate_form and value_support which return the type parameters of a Distribution
* along the way, I generalized the fallbacks for pdf and logpdf so that they work with any VariateForm.