dda_lookahead.c: move crossing speed calculation into a dedicated function.
Add another look-ahead testcase.
look-ahead: change crossing speed calculation algorithm.

The new one solely looks at speed differences of individual axes.
This means individual jerks for each axis (good!) and relative
simple maths (also good!).

See https://github.com/Traumflug/Teacup_Firmware/issues/45
and comments in the code.
dda.c: re-enable the hack with overly large rampup steps.

Until we have accurate rampup steps calculations, this hack is
neccessary for endstop searches.
dda.c: deal with endstop hits while still accelerating.

Also, move_state.step_no must be read atomically.