Use redirects during login process.

When loading a page while not authenticated, the user is now
redirected to the login page (`system/auth/login`), with a
`redirect` URL parameter set to the (encoded) URL of the original
page.  This `redirect` parameter is passed through any number of
unsuccessful login attempts, each of which loads the URL
`system/auth/login` with the `redirect` parameter.  Following a
successful login, the user is taken back to the URL given by the
`redirect` parameter (i.e. the original URL), or to the dashboard
if no `redirect` parameter is given.

Previously, the login form was rendered "at" the original URL, and
this did not play nicely after a failed authentication attempt -
the user would always be taken back to the dashboard.

This is also better from a pure URL management perspective -- each
URL has a single purpose and that purpose is never subverted by the
login mechanism (only diverted).