Ordered routes - ability to set priority on controllers.

This PR introduces ``priority()`` callable, a extended ``RouteCollection`` class to use the priority and a documentation entry about ``Ordered routes``.

The main goal of this functionality is to allow users to mix ``mount`` with ``match`` when both have the same URL but (for instance) different requirements - see #716.