Clean up hmc-system struct

Started to rework the sampler to internally work on `hmc-system` structs, rather than passing around separate position and momentum databases.  The code is a fair amount cleaner now.

I still need to add zone support, but I think actually that could be straightforward if I partition the hmc-system into three pieces: static positions, dynamic positions, dynamic momenta.

I hope that eventually:
1. The manipulation of derivatives could stand on its own and be usable with other mh-transitions and solvers.
2. HMC becomes an mh-transition.