reboot worker

This is the final PR for the reboot functionallity. It add a Reboot worker that waits for the machines reboot flag to be changed, and reacts.

This branch depends on:

https://github.com/juju/juju/pull/707
https://github.com/juju/juju/pull/728
https://github.com/juju/juju/pull/744
I'm pretty sure this at least needs to be deferred -- if we ClearReboot, then fail, and then come up again and return at line 82 the lock will be held forever. Possibly we should stick the rebootstate.Remove and the breakHookLock into one method?