+htc #16087 add FastFuture.transformWith and implement others in terms of that + recoverWith + lots of tests
!htp convert List[Rejection] => immutable.Seq[Rejection] everywhere
!htp #16088 replace RouteResult.Failure by Future.failed + handle post-processing directly in Directives

This replaces the awkward post-processing previously done with RequestContext.finish and
prevents the loop-hole of Future.failed which previously allowed errors
to be missed by the current ExceptionHandler.
!htp renaming: mapRouteResponse => mapRouteResult, mapHttpResponse => mapResponse
Merge pull request #16089 from spray/w/16088-fix-continuation-handling

16087, 16088 fix RouteResult handling support in routing infrastructure
!str Hide Tap and Drain from common APIs

* Introduce SimpleSource and KeyedSource traits
* Create Source/Sink helpers to create all Taps/Drains
* Make concrete Tap/Drain implementations private[scaladsl2]
Fold tap and drain into Sink/Source