+htp #15924 import FutureDirectives from spray

This builds on top of #16089, so just review the top commit.

I never found the FutureDirectives' names intuitive so I renamed them
 * `onSuccess` => `mapFuture`
 * `onFailure` => `recoverFutureWith`

which seem to fit more closely to what the directives are doing. Please suggest better names if you have better ideas.

/cc @sirthias