WiP: Add uniter changes to support reboot

This PR adds the uniter changes needed to support reboot.

Depends on:

https://github.com/juju/juju/pull/707
https://github.com/juju/juju/pull/728
https://github.com/juju/juju/pull/744
https://github.com/juju/juju/pull/782
https://github.com/juju/juju/pull/833

The unit agent should not be able to run more then 1 hook OR juju-run command at any one time AFAIK. This function is blocking. If we reach this point, and the process errs for whatever reason, the pid should be 0 here. This unit agent should not be able to run anything else at least until this function returns. So the Pid here can be aither the PID of the hook running, or 0 if it failed off the bat. Not sure how this can race.