Model parameter canonicalization

Some models do very poorly under resampling and updating due to degeneracy in the likelihood function. That is, multiple assignments of model parameters can equally well explain past data and predict future data. This can be rectified by breaking the degeneracy, choosing one representative for each such set of equivalent parameter assignements to be a *canonical* model parameter vector. This branch develops this idea, allowing ``SMCUpdater`` to recanonicalize models after resampling.

This has an additional benefit for resampling models near validity boundaries, as canonicalization can be used to truncate invalid models, or to reflect them back into valid models. The validity of Liu and West assumptions is not manifestly held in these cases, but it can perhaps be useful to recover invalid particles when the majority still behave in a resonable fashion?

I think this feature would be nice to have, but there's a couple things first:
- [ ] Needs tested!
- [ ] Good example model.
- [ ] Add to docs.