=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 
Lock-in wouldn't work because the route structure could look like this:

```scala
get {
  path("abc")
} ~
get {
  path("def")
}
```

If the first `get` would have greedily prevented the second branch to execute, a route structure like this wouldn't work any more. 

This is not a contrived case: people use the flexibility of the route structure to abstract route branches and only compose them on the top-level. Restricting route composition to an order with the most specific routes having to be at the top (or routes having to be in some kind of perfect normal-form) would be quite limiting.