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.
Let updatePinState update the state before calling handlers

Previously, the reports sent to HQ on a change would contain the old
mode and value and always lag behind one update. This change fixes this.
Keep pin state timer running when changing pin mode

Previously, it was stopped and started when changing the mode, probably
in an attempt to fix a problem really caused by updatePinState (and not
fixed by this timer stopping). updatePinState was already fixed, so just
keep the timer running (which simplifies the code a bit more).
Add pin.number bitlash function

This function returns the pin number for a given pin name, allowing
things like using a variable to store pin numbers based on a name. If a
number is passed to pin.number, it is checked for being a valid pin
number. If an invalid name or numbers is passed, -1 is returned.
Reduce size of getPinFromArg param and return value

8 bits is plenty for argument and pin numbers.
getPinFromArg now considers negative pin numbers invalid