overhauled how devices are represented in memory
The big change was making the website and API's DeviceModel no longer extend the Roomie.Commmon.HomeAutomation.Device class.  Now it implements the IDeviceState interface, which removes needless dependencies.  It's also more true to how the website and API's models work:  They aren't the devices, just their most recent state.

I also updated the API to work.  I haven't deployed it in a long time.  Because of the changes, I had to also update the WebHook project.  That thing needs to go away.

The VirtualAddress now operates on IDeviceState objects, and the XElement conversion stuff is now extension methods on IDeviceState.

Next up:
* Clean up Common.HomeAutomation.Device.
* Create INetworkState
* Abstract out addressing (Name, Location, NetworkAddress)

Once that's all done, I'm going to start thinking about how to update the database schema to allow for storing data based on the interface members of IDeviceState.  The immediate benefit of this would be the ability to store and display thermostat data from the website.