So as it is. The ModelSelectionSMC class has too many components hard-coded in.
I think we need to make various subclasses for the various concepts we handle like:
MCMC procedures (markov kernels)
The optimization procedure needs it's own class, as we will be wanting to try out a few different ones.
The GLM class I think should include the db and d2b objects. We could make an abstract parent GLM class and
inherit children (aka LogisticGLM) for specific implementations.
Basically we want the main class to be as modular as possible. This will make the code nicer to change, extend and test.