Detemplateify
Templates and interfaces are not technically fitting together well.
The only thing stopping us from hidding our templates behind interfaces right now are the StateTypes which are defined via the templates.
If we replace these with our own classes StateType, MatrixType and MultipleStatesType (Matrix or VectorXd, see the other issue),
then we can close a whole can of worms and still quite easily replace the types in the future