Added Positional<T>.vectorTo() for shortest vector

The returned vector is the shortest path from a to b.  For non-wrapped
objects, this is simply b-a; for wrapping objects, it's more complicated
(because the shortest path may cross one or more wrapping boundaries).

Also changed distance() to return vectorTo().length(), changed
Position::distance() to use length() internally instead of duplicating
most of its code.