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
Merge remote-tracking branch 'origin' into refactor/async

Conflicts:
	src/os/event/AwaiterErrorFileDescriptorTest.cc
	src/os/event/AwaiterFileDescriptorTest.cc
	src/os/event/AwaiterReadableFileDescriptorTest.cc
	src/os/event/AwaiterSignalTest.cc
	src/os/event/AwaiterTimeoutTest.cc
	src/os/event/AwaiterUserProvidedTriggerTest.cc
	src/os/event/AwaiterWritableFileDescriptorTest.cc

Manually edited file:
	src/os/event/AwaiterTest.cc