Add node power state management to Razor

This extends the IPMI system from passive monitoring of power state to active
enforcement: users can now declare the desired power state, and when that is
out of sync Razor will use the IPMI system to toggle to the correct state.

It also updates the database to use a custom type for power state tracking,
which means you get `on` or `off` nodes, rather than booleans with
unclear significance.

Finally, it makes an (ABI breaking) change to the layout of the node object,
moving power state out into a distinct object and exposing all the data
we have.  Especially, this exposes *when* the last power state update
happened, so users are hopefully less likely to mistake this for a real-time
statement of fact.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>