Simplified template class for locking
Improved/expanded Position interface

Position's constructor can now take any sort of container, not just an
initializer_list.

Added Position(vector<double>&&) which takes over the vector rather than
copying it.

Moved Position(const size_t&) to static Position::zero(const size_t&) to
avoid things like Position({3.0}) becoming ambiguous (either an
initializer list or a downcast to size_t).

Changed various loop ints to size_ts to avoid gcc warning

Updated PositionalAgent for Position changes