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
Remove unnecessary template parameters

To reduce number of template instantiations.
Declare Future::recover more safely

SFINAE through a default template parameter may not work as expected
when the user (erroneously) passes the defaulted parameter to the
template. Such an error can be avoided by SFINAE through return type.
Minor fix in DelayHolder documentation comment
Clarify behavior of unwrapping invalid futures

The documentation comment for Future::unwrap was not explicit about the
behavior for invalid futures. In the current implementation, the behavior
is undefined. This commit updates the documentation to match the
implementation.
Declare Future::then conditionally

After this commit, the single-argument overload of Future::then is
declared only when the return type of the callback function is not void.
This conditionality is necessary to add an otherwise-conflicting
overload of Future::then in the next commit.
Rename Future::setCallback to then

The new name is shorter.

The name "setCallback" implies that only one callback can be set to a
future. That is not the case for shared futures that will be implemented
in upcoming commits. The name "then" can be used consistently with the
shared future.
Remove Future::Callback member type alias

The type alias is now not used in any other member declaration.
Clarify requirements on callbacks for futures
Merge pull request #101 from magicant/refactor/async

Refactoring in future implementation
Add SharedFuture class template