Add: FactoryRouter

The factory router lets you construct routes in a more concise manner
which should be familiar from other routing libraries and frameworks.
Merge branch 'feature/factory-router' into develop

* feature/factory-router:
  Add: FactoryRouter