First set of ideas

This is my first set of ideas for how to approach the problem:

There are a set of adapters that are responsbile for the low level details of talking to hardware.  Then there are a set of classes which are children of device.  Finally these devices capabilities by including them.

**Please be incredibly critical of the ideas right now.  I want to know how to do this the best way possible.**

Is this a good approach?  I'm trying to build a system which can scale up.  It feels clunky to have to have devices and adapters but I don't want the low level details in device.  Also an adapter is going to have to implement a lot of methods if it has a lot of capabilities (God model warning?)

This code will never make it to master, it's just a request for comments.