Use newly added D0-D8 constants
Simplify is{Digital,Analog,PWM}Pin
Merge digital and analog pin state and mode arrays

Instead of separate arrays for analog and digital, there is now a single
array for all pins. This allows storing info about the special pins
(like MISO, MOSI, TX1, etc.) as well, in the future also allowing
controlling those pins through the pin functions (though now only the
D2-D8 and A0-A7 part of the array is used).
Merge updateDigitalPinState and updateAnalogPinState

Now that the pin state and mode arrays are merged, these functions are
nearly identical so they can just be merged.
Let pinWrite work for special pins as well

Previously, it would only work for D2-D8 and A0-A7. Now, it doesn't care
wether a pin is digital or analog or special, it just works based on the
pin mode.
Let pinRead work for special pins as well

Previously, it only worked for D2-D8 and A0-A7, but now it just looks at
the pin mode without distinguising between digital and special pins. It
does still treat analog pins differently, by calling analogRead instead
of digitalRead on them.
Let getPinFromArg support special pins

Previously, it only allowed passing in the pin numbers of the D2-D8 and
A0-A7 pins. Now, it allows any valid pin number, which enables using all
the pin bitlash functions to work with all special pins too.

Note that pin names are still only supported for the regular pins,
accessing special pins works by passing in their pin number directly.
Make setMode work for special pins

Before, it would update the register pin modes for special pins, but not
record the change in the pin state and mode arrays.
Let getPinFromName support special pins

Instead of "parsing" ax and dx pin names, there is now a lookup table
that is used to find the pin number for a name. This makes sure all pins
have names.
Add PinoccioScout::getNameForPin
Add PinoccioScout::getNameForPinMode
Add pin.list bitlash function

This shows a list of all available pins with their number, name, mode
and current value.
Add disconnected bitlash constant
Add pin.makedisconnected bitlash function
Run pin startup functions for special pins too
Make pin.save work with pin numbers too

Before, when passed a pin number instead of a name, it would set the pin
mode but then fail to create the corresponding startup function since it
had no name available. Now, it looks up the name for the pin number
instead of using the string argument directly. Since this name is a
flash string, the previous printf approach doesn't work anymore, so we
use a StringBuffer instead (which allows easily concatenating flash
strings).
Make pin.save(..., disabled) not remove the saved pin state

Since 'disabled' is no longer the default state, setting a pin mode to
disabled is now actually meaningful. Explicitely saving the disabled pin
mode is now possible, though there is no longer any way to remove a
saved pin mode (except manually doing e.g. "rm startup.d2").
Add argument checking for pin.makepwm
This removes the PiniccioScout::make* methods, instead letting Shell
directly call PiniccioScout::setMode.
Don't call updatePinState for unused pins periodically

Previously, updatePinSate was called when the pin mode was changed, and
periodically from the state change handler, even for unused pins. This
meant updatePinState had to skip the event handlers and updating the
state for unused pins, _except_ when the mode changed (in case the mode
changed from used to unused).

This latter is needlessly complex and can be prevented by simply not
calling updatePinState for unused pins periodically. Now updatePinState
no longer ignores unused pins - if it's called for an unused pin, then
it's for a pin change so it should do its work anyway.

As an added bonus, this prevents doing a pinRead for unused pins, whose
result isn't actually used later anyway.