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

These values are only checked once juju-reboot is called, and are only set here. Once juju-reboot is executed, the uniter code that uses these values is executed in order, one step at a time, and is expected to check the values after they are set.

So the order in which these values are set/checked is as follows:

* ctd.pid is set here when the hook starts running
* If a reboot is requested, RequestReboot (defined above) sets ctx.rebootPriority _first_ 
* RequestReboot then runs killCharmHook, which blocks untill ctx.pid is set to 0 by runCharmHook (when the process running the hook exits, ps.Wait() returns, and ctx.pid is set to 0). 
* after this point ctx.pid is no longer needed or checked.

The reboot priority is only set in RequestReboot, and once set to a value other then RebootSkip, will trigger a series of events that will lead to the agent shutting down (via the above steps).

In any case, the tests that will follow, will check for race conditions.