Classes to represent multinomials and their Dirichlet priors

This is motivated from a code-cleanup perspective, as we have several places where we're using multinomial distributions with Dirichlet priors and we were having to duplicate logic in many places (normalizing weights, etc).

This setup should result in cleaner code overall, and should let us plug in these distribution classes in other places where we want a multinomial with smoothing from a Dirichlet prior.