Additional things for `FiniteDistribution`: - `factor` method that weights outcomes (a la webppl) - `then`, `normalize`, `from_pairs`, `join` methods (see https://github.com/markkho/msdm/blob/a88a5a8ac23fc38b9f08aa93866c96381745623d/msdm/domains/gridmdp/windygridworld.py#L10) - syntactic sugar with `~` for sampling