Partially fix optimized build configurations

Still need to fix -O1 for C++ builds. One of our compiler flags breaks
symbol loading when -O1 is enabled in the BMS & DC projects.

+ String fix
force MPLAB to add nupp/platform headers
force MPLAB to add missing headers
Make Pin interface platform independent

All PIC32-specific code for nu::Pin is now relegated to
`nupp/platform/pin.hpp`
new: PIN generating macro, for specifying Pins

+ place `extern "C"` statements within C headers
+ remove debug variable in spi.hpp
replace std::string with nu::String in nu::OStream

that's the last vestiges of STL/the heap!