Implement BayesianMarkovStateModel

Clear PR with squashed history for `BayesianMarkovStateModel`.

- [x] Implement sampler
- [x] set `BayesianMarkovStateModel` API
- [x] Add docs
- [x] Add example
Because the c code uses this same construct -- the random numbers are generated in python and then pasted into the `metzner_mcmc_step`. If you use `random.randint` in the python version, then `metzner_mcmc_slow` and `metzner_mcmc_fast` don't return exactly the same sequence of transition matrices, given the same seed.