Implement BayesianMarkovStateModel

Clear PR with squashed history for `BayesianMarkovStateModel`.

- [x] Implement sampler
- [x] set `BayesianMarkovStateModel` API
- [x] Add docs
- [x] Add example
Why is this better than using random.randint(0, n_states - 1, size=(2))?