Refactored routes compiler

* Separated concerns, models classes, parser and compiler live in separate places
* Switched to using twirl to generate the router

I didn't change any actual functionality.  Most of the complex generation logic is in the templates package object, this is where most of the complex data structure manipulation and processing is done, and where things like method signatures are generated.  In general, I've tried to strike a balance between readable template, and readable generated code.
I don't recall whether or not this is cached in reality, but perhaps consider having it as a private val to the object.