Add SharedFunction::create helper function
Add Promise::fail function
Check return type of argument function to Future::recover

The G template parameter is removed since it does not have to be part of
the signature.
Merge pull request #94 from magicant/refactor/async

Future implementation enhancement