Implemented injectable router

* Replaced Routes.setPrefix with Routes.withPrefix
* Created RoutesPrefix so that there was no direct dependency from the reverse router to the forwards router
* Applied RoutesPrefix object change to old static router
* Created new injected forwards router
* Implemented abstraction in the sbt plugin that allows selecting a routes generator
* Copied existing routes-compilation scripted test to new injected-routes-compilation scripted test that uses injected routers
I'm just wondering if it's possible to avoid the `withPrefix` trick to re-prefix an injectable router again after it has been created. With static routers `setPrefix` or `withPrefix` need to be used to re-prefix an instance. But with injectable routers we should be able to directly create the router with the correct prefix.

Perhaps for injectable routers we could generate a factory for the router, instead of the router itself. We'd inject dependencies into the factory. Then, once we've got a factory with injected dependencies, we could use the factory to create the router itself.

E.g. Change this generated code (simplified):
```scala
class Routes @javax.inject.Inject() (...deps..., prefix: String) extends Router.Routes {
  def withPrefix(prefix:String): Router.Routes = new Routes(...deps..., prefix)
  ... router code ...
}
```
Into this generated code:
```scala
class Routes @javax.inject.Inject() (…deps…) extends Router.RoutesFactory {
  def create(prefix: String): Router.Routes = new Router.Routes {
    ... router code ...
  }
}
```

The `Router.load` method could be changed to return a `RoutesFactory`. For injectable routers it would use the generated factory shown above. For static routers it could wrap the static instance in a thin "factory" wrapper.

```scala
class StaticRoutesFactory(instance: Router.Routes) {
  def create(prefix: String): Router.Routes = {
    instance.setPrefix(prefix) // or withPrefix()
    instance
  }
}
```

Using a fatory would avoid this need to re-prefix routers. I think it would also simplify the code in and around `Router.load`.