a simple Shell.eval() function that wraps/runs any bitlash, untested
allow eval to take just one arg too
add a vararg based friendly Shell.command() convenience thing for happiness
to make command useful, you need an exec that returns a string, for chaining
Use the new Shell.eval instead of doCommand directly
simplify the Shell.eval interface and make Shell.evalArgs work
Postpone Backpacks::setup()

Now it happens after setting up the ScoutHandler and, more importantly,
ModuleHandler (since the Backpacks::setup might load modules). It
doesn't really matter in practice, since ModuleHandler::setup() is
currently empty, but this might prevent surprises in the future.
Add Callback and CallbackList utility classes

These allow managing a list of callback functions / event handlers.
Allow registering callbacks for when toggling the backpack power
Let WifiModule::bp() return a pointer

Previously it returned a reference, but returning a pointer allows it to
return NULL next.

Additionally, this changes all the calling code to check the bp()
pointer instead of the module loaded() status before using the backpack
methods. Currently, there is no way for bp() to return NULL when the
backpack is loaded, but this will change in the future.
Let WifiModule properly handle backpack vcc toggling

Previously, when the `power.disablevcc` bitlash function was called, the
wifi backpack would power down and the code would panic. Now, it
properly disables the software stack for the wifi backpack when powering
down and re-enables it when powering up.
Handle unrecoverable errors flagged by the Gainspan module

Since today, the Gainspan module can detect unrecoverable errors
(command timeouts and SPI 0xff errors). If this happens, the WifiModule
now toggles the backpack VCC pin to power cycle the backpack. If that
doesn't help, it reboots the entire scout.
Improve potential memory leak in Backpacks::detect()

When Backpacks::detect() was called for a second time, it would free the
list of backpacks, but not the data in each backpack themselves. This
adds a new Backpacks::freeBackpacks() method to handle the cleanup
properly.
Free memory used by backpack info after startup

This includes EEPROM contents and parsed descriptors, which are needed
to find out the reserved pins, but are no longer needed afterwards (and
can always be re-requested if needed).
Let the backpack bus stuff handle backpack VCC toggling

When the backpack vcc is turned off, the list of backpacks is cleared.
When it is turned back on, the backpack bus is re-initialized.

Before this change, toggling the power would cause the backpack bus to
stop working, since the slaves forget their assigned addresses when
power cycled, but the 256rfr2 expected them to still respond to their
previously assigned address. By re-enumerating the bus, this is solved.
Merge branch 'master' of https://github.com/Pinoccio/library-pinoccio into eval
this won't change the behavior for existing commands, is only a convenience for the basic usage of Shell.eval()
track all wifi client activity, and paranoid reassociate if it's idle too long
keep track of connection attempts so we don't try too fast
include the sleep handler header too