Shell c++ namespacing cleanup
Fix zero-initialized data

Don't want to include a startup stub, so I'll just put bss in the linker script.
This has us send the zeroes over just like any other data.
More complete implementation of BitbangDevice
More work on bitbang I/O