WiP: Add machine reboot support

This PR adds changes in the machine agent 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
I still think there's less to go wrong if we separate out the error statuses -- something like uniter.ErrWaitForReboot -- but maybe it's smarter to fix ErrTerminateAgent (which has the same problems) at the same time (but separately from this CL).