Base versions of key methods now virtual

The base versions of distance(), moveTo(), and truncate() are now
virtual, since classes might want to override them (for example, to
support a circular positioning in one dimension, where moving to 1.1
actually wraps around and moves to 0.1.