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.
and I still think this needs to be broken up -- there's a NotFound case when setting while it's dead, indicated by ErrAborted, and then a general who-knows case when clearing it, which can't trigger ErrAborted because there's no assertion to fail. Trying to share code between the two cases *and* getting the error handling right just makes it harder than needed.