Refactored routing compiler to use a parser, split up Route class into several sub-classes, updated tests