WiP: Implement reboot watcher

This is just the first branch in a series that is meant to add safe reboot support via juju hooks.

The watcher will look for any reboot event hat happens for a given machine. If that machine is a container, then the watcher will look for reboot events on its own ID and the ID of all parents. For example, lets say we have a machine with ID:

1/lxc/22/kvm/0
1/lxc/21/kvm/2

A reboot event on 1, will trigger a reboot on: 1, 1/lxc/22, 1/lxc/22/kvm/0 and on 1/lxc/21/kvm/2. A reboot on 1/lxc/22, will trigger a reboot on 1/lxc/22 and 1/lxc/22/kvm/0. And finally, a reboot on 1/lxc/22/kvm/0 will only be visible to its own worker.

This is still a work in progress.
Wondering if all this would be cleaner if we separated the logic? There's no way a clear can be aborted, but a set can be (by a dead machine) -- and I'm not sure the buildTxn mechanism quite what we need in either case. If we're setting, an ErrAborted failure is *always* "machine is dead or missing"; if we're clearing, ErrAborted should be impossible.