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?
That sounds like a good idea. Since this PR is primarily about tests, should this enrollment interface work be done in a separate PR? I don't think @dianakhuang was able to complete it; we're currently working with a skeleton of what the enrollment interface should be.