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