For components with more than one output, pass required storage from subclass

Complicates the interface a bit, but saves massive amounts of memory.
Previously would run out of mem on less than 20 nodes, due to large
hard-coded connection array for outputs in Component baseclass.
Now subclass just allocates exactly what is needed.
Pretty-print debug output from device on host-side
Avoid sending command stream over serial too fast
More debugging instrumentation and error handling
Hacky disabling of overly verboose debug output

These should be opt-in, configured with the DebugConfig command stream
command.