updated home automation read-only state classes
With two things:
First, to have public constructors for initializing an object.  This is good for unit testing or for whatever other application where building an immutable device state in memory would be useful.
Second, when deserializing, the thermostat state is not actually read yet.  But just assigning a strictly empty ReadOnlyThermostatState was causing problems, so I added a static Empty method onto ReadOnlythermostatState, which creates empty sub-objects too.
fixed device syncing
between the desktop and website
Basically the DeviceModel schema needs an overhaul.
added unit tests for IDeviceState
They test in-memory copying and also serialization.  They're not great, but they're a start!
Currently thermostat serialization tests fail, because the code code to make that work isn't written yet.  But now that there are some unit tests, I can more confidently change how serialization works.