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.
I really am having trouble following all this. How about just doing this:

    func machinesToCareAboutRebootsFor(machineId string) []string {
        var possibleIds []string
        for currentId := machineId; ; currentId != "" {
            relevantIds = append(relevantIds, currentId)
            currentId = ParentId(currentId)
        }
        return possibleIds
    }

...and using a set.Strings to test membership in the watcher's filter func, and a $in where you need to query mongo?