Initial pass at device abstraction

This should go before #118 
It is more that every device that we can connect to has some sort of transport mechanism that it will use - be it usb/serial or bluetooth.  I can move it, but I'm pretty sure most of the devices we want to connect to will need it. I also see this class as filling out a little more as we discover more about the devices we connect to.