programmer/buspirate: make @outbuf an array

ruby-2 will convert integers pushed into a string to utf-8 symbols,
thereby changing the data/commands we are sending.  use an array to
prevent this.
programmer/gdbserver: implement extended remote

This allows use of `target extended-remote :1234', which in turn allows
use of the gdb command `run', which will reset the system.
hardware: use proper field marker for optional parts
hardware/Makefile: add target to print BOM
programmer/gdbserver: close connection on detach
lib/mchck: add crit_enter/exit
lib/usb: move clock initialization to usb_enable
lib/usb: add usb_pipe_enable/_disable
usb/kinetis: use USB_MAX_EP
usb: do nothing in usb_clear_transfers

Not sure what this is supposed to do - USB spec says to stop all
transfers, but what does this imply?  Definitely removing
all (queued) (rx) transfers will break things.
usb/cdc: use uint8_t instead of char arrays
examples: add usb-serial-loopback
toolchain/real-ld: skip argument to -plugin

Reported-by: Krzysztof Foltman
toolchain/mchck.mk: use gdb3 debug info
add interrupt support
lib/usb: use interrupts
add sleeponexit support
examples/usb-serial-loopback: use sleeponexit
hardware: slight reroute
toolchain: fix vector numbering

The vector numbers from the Freescale header files are completely
bogus.  Use the reference manual data instead.