Simplify towards movement strategy, update specs

Now location will always rotate to face / move towards target.

When near target, deacceleration is controlled by inverse
orientation
rotation cb: return angle_between orientations in default case

Refactors Motel Rotation callback to define helper methods and
to return angle_between current and orig orientations if rotation
cannot otherwise be deduced
UI: update Towards strategy to match server side algorithm
UI: fix acceleration so that as to be proportional to time

Ports server side acceleration fix to client
Towards MS: only face target if not facing

Also a few small related tweaks to movement and tracking
Fix few edge cases with axis-angle computation

  - ports fix handling similar & parallel vectors to js
  - add angle projection out out bounds detection
    (previously removed, should not have been)