New router

Like the `ScalaBusMod` this can be used as a replacement for `RouteMatcher`. It should be more idiomatic to use than the `RouteMatcher`.
I think a for/yield might make this slighlty more readabable:

```
for {
   exists <-  fileExists(if (absolute) path else s"$workingDirectory/$path")
   file <- directoryToIndexFile
} yield {
   logger.info(s"Serving file $file after receiving request for: $path")
   resp.sendFile(file, notFoundFile)
} recover {
   case ex: FileNotFoundException =>
       endResponse(resp, Error(RouterException("File not found", ex, "errors.routing.fileNotFound", 404))
   case ex => endResponse(resp, Error(RouterException("send file exception", ex, "errors.routing.sendFile", 500)))   
}
```

The reason I think it's more readable is cos it hides the inner details of flatmap/map calls...etc, and you can read it line by line as a flow of futures concatenated.