WIP: ActionEvents filter

Requesting comments, especially on tests.  This branch includes some commits which are waiting on PR 140 and 141 to land, but the API should not change.

I'm not positive this exercises all possible cases; I'm also planning to add a 1-2 second delay in the event consumer loop so we can test adding actions midflight.

All input welcome!
Ah, ok. So you can have nils sent onto nil channels.

Might it be neater to have a `(*Filter) nextAction() *hook.Info` func? The you can always do `case f.outActions <- f.nextAction(): f.sentAction()` on one end, and `case ids, ok := <- actionsw.Changes(): f.gotActions(ids)` on the other (plus `ok` handling) -- and keep the main loop clean, and all the actual maintenance of the structs in 3 closely grouped methods?