[r=rogpeppe] state/machine: new agent API
As discussed, for testing reasons it makes sense to
place APIs for a given agent alongside one another,
so this CL puts the machiner API and the machine agent
API alongside one another.
Client-side machine agent API in a subsequent CL.
Re-proposing to avoid the prereq, which I can't
submit right now.
Original CL here: https://codereview.appspot.com/10398043/
https://codereview.appspot.com/10384046/