Implement Roland Brochards' new acceleration maths clock-based.

His implementation was done on every step and as it turns out,
the very same maths works just fine in the clock interrupt.
Reason for the clock interrupt is: it allows about 3 times
higher step rates.

This strategy is not only substantially faster, but also
a bit smaller.

One funny anecdote: the acceleration initialisation value, C0,
was taken from elsewhere in the code as-is. Still it had to be
adjusted by a factor of sqrt(2) to now(!) match the physics
formulas and to get ramps reasonably matching the prediction
(and my pocket calculator). Apparently the code before
accumulated enough rounding errors to compensate for the
wrong formula.
Fix endstop stop condition for clock-based acceleration.

This required a strategy change, since move_state.n is no longer
decreasing in steps of 1.
dda.c/.h: move n and c back into the dda structure.

This is a preparation for starting a move from non-zero speeds,
which is needed for look-ahead. Keeping both variables in
move_state and doing the calculations in dda_start() is possible
in principle, but might not fit the tight time budget we have when
going from one movement to the next at high step rates.

To deal with this, we have to pre-calculate n and c, so we have
to move it back into the DDA structure. It was there a year ago
already, but moved into move_state to save RAM (move_state exists
only once, dda as often as there are movement queue entries).
Add a testcase for look-ahead (smooth curves).
dda.c: re-gain look-ahead compatibility.

We're here! Incredible high step rates as well as smooth
movements due to look-ahead.
look-ahead: take F_start into account on acceleration calculations.
gcode-process.c: fix HEATER_EXTRUDER reference.

A rare combination of factors makes this code assume HEATER_EXTRUDER
always exists, when that is not necessarily so.  Add the normal
guard around it.
dda.c: simplify start conditions calculation.