created IThermostatState
Fun!  IThermostat implements it, so in code, a thermostat has state.
But the point was to be able to save states into events.  ReadOnlyThermostatState also implements IThermostatState, and it has a method that copies state from another IThermostatState, which is perfect for taking a state snapshot to save into an event.
created IDimmerSwitchState
just like IThermostatState.  I had to change IDimmerSwitch a bit, moving the Power setter to a method called SetPower.  This actually makes a bit more sense anyway... now it's shaping up that IDeviceTypeState has properties, and IDeviceType implements IDeviceTypeState and has methods.
removed Percentage from IDimmerSwitchState
Now it's just an extension method on IDimmerSwitchState.