Improve auto-advance and distance calculations

* Rewrites route engine as a state machine.
* Adds special handling for route start, route complete, and lost states.
* Now uses increasing distance to instruction to determine when turn is complete.
* Revises methods for calculating distance to next instruction and destination.