Let hoppers change direction, use range bits as offset
Hoppers were ignoring the step-vector toggle. This is now corrected,
with a re-write to get more compact code (toggling the rights bits only
in a single place). The range counter is no longer decremented for
hoppers, so these bits can now be used as flag for something else.
Currently they are used to subtract range*oldStep from the hop square,
so that with range=1 the hop-toggle takes place on the square before
the obstacle, allowing implementation of colliding bifurcators.