Add a new exception class for routing errors.

When routes cannot be found for reverse routing or parsing a URL
a special error is raised. This error will be used to trigger special
error pages that make it easier to understand which routes are
connected.
Throw exceptions when routes result in an error.

When parsing routes throw an error when an incoming URL does not match
any connected routes. This error will be used to generate a more helpful
error page.
Add an error template for missing routes.

Having an error page that shows all the connected routes will help
developers figure out routing errors better.
Make MissingRouteException a 404.
Fix whitespace.
Add info on how to replace the error template.

This block is on all the error pages, so having it here helps with
consistency.
Improve missing route error page a bit.
Fix APC related errors.
Merge pull request #3850 from markstory/3.0-routing-errors

3.0 routing errors