Unify action ctor

This is a simplification of the `Action` API and cherry-picks most of the improvements from #12 as well (minus the `label` itself).

@danshultz can you please have a look?

thanks!