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.