Add AwaiterImpl::removeFiredEvents

This is a refactoring to make functions that iterate on pending events
more simple and single-responsible. The following three functions are
so rewritten that they no longer remove fired events:

- fireTimeouts
- computeArgumentRemovingDoneEvents ->
  computeArgumentFiringErroredEvents
- applyResultRemovingDoneEvents -> applyResult
Recalculate pselect argument after removing events

This commit fixes a bug in the AwaiterImpl::awaitEvents function.

If any event is fired while computing the argument to pselect in the
computeArgumentFiringErroredEvents function, then the argument has to be
recalculated because the fired event may add a new pending event that
affects the argument.
Add triggers test helper function
Add more tests for Awaiter
Merge pull request #100 from magicant/feature/awaiter

Complete awaiter implementation