=htp groundwork for routing and a first, basic set of directives

This is a first cut extracted from #15609 ready to be reviewed.

It contains 
 - The basic data structures for routing
 - `BasicDirectives` containing helper directives used for building other directives
 - `PathDirectives` + `MethodDirectives`, so that one can build simple demos and as a demonstration of how directives are built
 - A first implementation of `HttpService` on top of streams
 - a new `akka-http-testkit` project containing our testing infrastructure
 - a new `akka-http-tests` project containing tests for the current state + a simple, standalone test application demonstrating routing on top of streams
 - supporting changes in the existing infrastructure

Even in this form it is quite big and much stuff to review so I'm not sure if it is still viable to be included in the 0.6 milestone.

/cc @sirthias 
Actually I was a bit too far ahead, we *do* need StandardRoutes to enable things like this:

    def method(httpMethod: HttpMethod): Directive0 =
      extract(_.request.method).flatMap[Unit] {
        case `httpMethod` ⇒ pass
        case _            ⇒ reject(MethodRejection(httpMethod))
      } & cancelRejections(classOf[MethodRejection])

I many cases, when building higher-level directives from lower-level ones we *do* need the ability to reject or complete some requests while passing on others. In order for this work we need to be able to somehow convert the built-in route definitions (complete/reject/redirect/...) to Directives. Ideally (in order for the above code to compile as is) implicitly.
Also, in order for this to work also for directives that extract stuff it's not good enough to only convert to `Directive0`.