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.
Since it doesn't look like you're pattern matching on this, what about avoiding the `toList` conversion. Saves a conversion, plus an `Array` will be faster to operate on. Although it should be inferred, you can add `Seq` to the signature of `lines` to avoid exposing `Array`.