pinio.h: Fix bug in macro definition

Including a semicolon in a macro function causes problems
when the "function" is called inside an if statement.  Fix
four cases in pinio.h where this error exists but currently
is not harming the code.
Rename delta -> um_delta to avoid collision
dda: Convert TARGET axis vars to array

In preparation for more efficient and scalable code using axis-loops
for common operations, add two new array-types for signed and unsigned
32-bit values per axis.  Make the TARGET type use this array instead of
its current X, Y, Z, and E variables.
dda: Convert more axis variables to arrays

Many places in the code use individual variables for int/uint values
for X, Y, Z, and E.  A tip from a comment suggests making these into
arrays for scalability in the future. Replace the discrete variables
with arrays so the code can be simplified in the future.
um_to_steps_*: convert to generic implementation

A generic implementation here will allow callers to pass the target axis
in as a parameter so the callers can also be made more generic.
dda: Move axis calculations into loops

Clean up code to reduce duplication by consolidating code into
loops for per-axis actions.
home: Reduce duplication with axis arrays
Remove obsolete um_to_steps_[xyze]