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
Maybe... but how is this method supposed to know how the routes class is meant to be instantiated?  Will it be transformed into a binding, to let the DI framework instantiate it?  Or does it need an `Injector`, that will then instantiate it?  My original plan was to transform it into a binding, so the routes instance would be transformed into an instance binding, and the routes class would be transformed into a constructor binding.  But then I changed my mind later, and used an Injector to instantiate the class.  Because this returned an `Either`, and didn't mandate a particular way that the routes class had to be instantiated, that made switching between the two very straight forward, which leads me to think that returning `Either` is the right thing to do.