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 won't correctly handle white-label courses, which I believe set enrollment action to something like "add to cart".