Improved Angular routing in a backwards compatible way.

General routing improvements  to support slash matching, ordered routing of ambiguous urls, typed groups and likely performance improvements.

Angular now basically supports the werkzeug routing syntax.
`/foo/:bar`
`/foo/<path:bar>`
`/foo/<string:bar>/`
`/foot/<path:bar>/:id/`

Addresses:
- A TODO where most routes was being compiled and processed every single route change. Routes are now processed up front and simply matched

- Routes are now processed in the order in which they are added instead of arbitrarily.

- Helps with #1147
- Helps with #1159
- Makes #918 easier

- It is now possible to match the forwardslash character.

- It is now possible to restrict your match to string, int or path.