Fix logistration Jasmine tests

> For three days and three nights he labored, and lo! A great multitude of tests, which no man could number, appeared before him.

Jasmine tests aside, this includes several bug fixes caught during the course of test writing, wide-ranging general clean-up, and adds [js-url](https://github.com/websanova/js-url), a lightweight URL parser. We're missing test coverage of the form validation logic and the enrollment interface, but I think that's best treated as separate work.

@AlasdairSwan and @dianakhuang, could you help me review this?
This should be moved to the preRender function to avoid the need to duplicate the rest of the postRender function. Once it has been moved deleting this postRender function will mean the default one is used - which is the same as lines 48 - 51.