Rename pin.list to pin.status

This is more consistent with other commands that show a human readable
status.
Show PWM and wakeup support in pin.status

> pin.status
Note: pin.status currently only works on Serial
---------------------------------
0   rx0     reserved        -
1   tx0     reserved        -
2   d2      input_pullup    1       supports PWM, supports wakeup, wakeup enabled
3   d3      unset           -       supports PWM
4   d4      unset           -       supports PWM, supports wakeup
5   d5      unset           -       supports PWM, supports wakeup
6   d6      unset           -
7   d7      unset           -       supports wakeup
8   d8      unset           -
9   ss      unset           -       supports wakeup
10  mosi    unset           -       supports wakeup
11  miso    unset           -       supports wakeup
12  sck     unset           -       supports wakeup
13  rx1     input_pullup    1       supports wakeup, wakeup enabled
14  tx1     unset           -       supports wakeup
15  scl     reserved        -       supports wakeup
16  sda     reserved        -       supports wakeup
17  vcc     reserved        -
18  batt    reserved        -       supports wakeup
19  bkpk    reserved        -
20  chg     reserved        -
21  ledb    reserved        -       supports PWM
22  ledr    reserved        -       supports PWM
23  ledg    reserved        -       supports PWM
24  a0      unset           -
25  a1      unset           -
26  a2      unset           -
27  a3      unset           -
28  a4      unset           -
29  a5      unset           -
30  a6      unset           -
31  a7      unset           -
Rename sleep to powerSleep (in C++)

This is more consistent with the other function names.
Let Shell.defined take a const char*

Inside, it still needs to be cast back to char* since bitlash is not
const-correct, but now at least our code is ok.
Stop supporting a full command as callback to power.sleep

Before, you could pass a full bitlash command as the callback for
power.sleep. In preparation of passing arguments to the callback, this
support is removed and only a plain function name can be passed now.

This commit only adds a single check and renames variables, it does not
otherwise modify any behaviour.
Don't do Scout.something inside the PinoccioScout class
Replace SleepHandler::pastScheduledEnd() by scheduledTicksLeft()

This returns the number of ticks left for sleeping. If it returns 0,
we're at or past the end of the sleep period, so it can still be used
wherever pastScheduledEnd() was used. This prepares for more changes in
the sleep handling next, but should not actually change behaviour.
Slightly restructure sleep handling in case the sleep time already passed

The scheduledTicksLeft method was now potentically called twice in short
succession. However, since it involves some 32-bit arithmetic, it's
better to just pass the "are we past the end" conclusion on into
doSleep, to prevent having to call it twice.
Pass the scheduled and remaining sleep time to the callback

This allows the callback to detect wether the sleep was completed or
interrupted.
Resume interrupted sleeps when the callback returns non-zero

Previously when a sleep was interrupted, the callback was ran and the
sleep ended. This is still the default, but if the callback returns a
non-zero value, the sleeping continues (until interrupted again or
finished, the callback is ran again in either case).

Note that before doing the actual sleeping, the loop functions run at
least once, possibly longer if they create unfinished business that the
sleep code waits for.
Do not strdup(NULL)