Big refactoring.  Details below...

Refactored mechanics for prereq pulling.  This is now handled by
a role that can be composed into any action (e.g. Add or Pull).

Also refactored mechanics for committable actions.  The Committable
role now handles all the work of starting and finishing the revision.
This eliminates a lot of duplicate code.  But it may lock us into
a particular workflow.

That workflow broke down in the Install action, which needs to
do work *after* the stack is committed.  I worked around that by
(ab)using a role to do the installation after the commit.
Don't need that stack argument now.