Add dedicated type for delay callback

This commit is a refactoring adding a type for delay callback. The
std::function<callback> type is replaced by std::unique_ptr<callback>
which is typically smaller. The new type can also reduce memory usage
because non-movable callbacks no longer have to be wrapped in
shared_function.
Add dedicated type for shared future callback

This commit is a refactoring adding a type for shared future callback.
The std::function<...> type is replaced by std::unique_ptr<callback>
which is typically smaller. The new type can also reduce memory usage
because non-movable callbacks no longer have to be wrapped in
shared_function.
Return continuation when setting result to promise
Return continuation when setting callback to future
Don't use shared_function in shared_future

We no longer have to wrap the callback in shared_function since the
requirements on the callback types have been weakened.