Improve the look and feel and extensibility of the login/register pages.

The login and register pages have looked pretty terrible for a while,
and weren't at all extensible. This change cleans them up quite a bit
(both the visual style and the underlying code) and adds reusable CSS
classes and support for template hooks.

It also no longer hard-codes the description telling you to use your
standard username/password if registration is disabled. Instead, any
auth backend can provide login instructions, regardless of whether
registration is allowed. The instructions will appear immediately below
the header for the page.
Properly handle incorrect revisions in the github get_change() implementation.

The get_change() implementation in the GitHub hosting service was letting a
bare Exception through in its failure case, which I think only really happens
when GitHub's API is having problems. This meant that the API would return a
500 and we'd get a traceback in our email. I've changed it to catch Exception
and re-raise as SCMError, which is caught by ReviewRequestResource.create()

Testing done:
Ran unit tests

Reviewed at https://reviews.reviewboard.org/r/5015/