Added CircularPosAgent: wrapping positional agent

New PositionalAgent subclass supports distance calculations, automatic
wrapping when moving past a boundary, wrapping along just certain
dimensions.

- Explicitly added an initializer_list: the generic Container interface
  won't automatically match an initializer_list because the compiler
  can't deduce the type of initializer list accepted, and until it
  deduces that, it can't match the generic container.
- Removed rvalue PositionalAgent constructor: it's wrong, since
  boundary1 and boundary2 are *not* the lower and upper boundaries:
  rather the min and max coordinates of each become lower and upper
  coordinates.
- Removed the 1-, 2-, 3-, and 6-double-argument PositionalAgent
  constructors; by accepting Positions we already implicitly support
  initializer lists, so PositionalAgent({a,b}, {c,d}, {e,f}) works as
  expected: plus it's clearer than PositionalAgent(a,b,c,d,e,f).
- Likewise for the 2- and 3-argument moveTo and moveBy methods.
- Made the various boundary methods of PositionalAgent virtual because
  CircularPosAgent needs to override them (since wrapping boundaries
  aren't really boundaries).
- Default lower_bound_ and upper_bound_ to zero vectors of the proper
  length (they get reset if boundaries apply, and are ignored if there
  are no boundaries).
- Added pos-agent-test for testing various agent movement and wrapping
  methods.