Make MixtureModel parametric so that it works with the fallbacks

MixtureModel defines a Distribution, but unlike all (?) other distributions, its type does not tell us if its univariate, multivariate or matrixvariate, and similarly whether it is discrete or continuous. Consequently, the methods in fallback.jl do not apply to it. This change brings MixtureModel into the fold, by parametrizing it w.r.t to these aspects. 
The immediate motivation for doing so was using one of the variants of rand/rand! that is defined in fallbacks.jl. It generally seems like better design IMO.