config.h: introduce PS_MOSFET_PIN for Sanguish support.
Add config.sanguish.h.
dda.c: allow protected re-entry for time based stepper calculations.

This becomes more important when acceleration is calculated
there, too.
analog.c: use atomic macros.
timer.c/.h: make TICK_TIME macros available globally.
dda_maths.c/.h: implement an integer inverse square root algorithm.

This 1/sqrt(x) implementation is a 12 bits fixed point implementation
and a bit faster than a 32 bits divide (it takes about 11% less time
to complete) and could be even faster if one requires only 8 bits.
Also, precision starts getting poor for big values of n which are
likely to be required by small acceleration values.
More acceleration maths.

* Refactored lookahead code to compute everything in dda steps.

* New 12 bits fixed point implementation of 1/sqrt(x).

* Replaced RAMPING iterative scheme with an approximation of the explicit
  formula (sqrt(n+1)-sqrt(n) ~ 1/(2*sqrt(n)))

NB: The 1/sqrt(x) implementation is a bit faster than a 32 bits divide
    (it takes about 11% less time to complete) and could be even faster if
    one requires only 8 bits. Also, precision starts getting poor for big
    values of n which are likely to be required by small acceleration values.
re-tuning, and enable endstops

Seems my steps values are out of whack now.  Tuned in some new ones.

Endstops no longer working, so tried to coax them into existence again.
No luck yet.
Merge remote-tracking branch 'main/roland' into mine
Turn off slow_homing to fix endstops.

Don't know why this should work.  Maybe my branch is broken.  Maybe
it's the main one.