Refactor canonical urls

The problems with breadcrumbs were being introduced by a mismatch between
sphinx's concept of the canonical url and the urls used in the app.

This patch makes the app stricter about the canonical location, and rather
than rendering the content if the url is an acceptible alias, it will now
issue a 301 to the canonical location.