Add Identity class
Remove unnecessary template parameters

To reduce number of template instantiations.
Allow Future::then to pass Promise in

The new overload of Future::then enables more fine-grained promise
treatment.
Allow Future::map to pass Promise in

The new overload of Future::map enables more fine-grained promise
treatment.
Allow Future::recover to pass Promise in

The new overload of Future::recover enables more fine-grained promise
treatment.
Allow Future::unwrap to pass Promise in

The new overload of Future::unwrap enables more fine-grained promise
treatment.
Reimplement Future::map using Future::then

This refactoring reduces code size and removes hidden code duplication.
Reimplement Future::recover using Future::then

This refactoring reduces code size and removes hidden code duplication.
Reimplement Future::forward using Future::map

The Forwarder class template is no longer used and thus removed.
Typo in Future::recover documentation
Add Future::wrap function