Remove the dependency upon Underscore.

Replace the couple methods it does use with inline versions. Namely this meant implementing a version of `_.has` and `_.contains` (neither of which have to be as complex as what's in Underscore, as JSHint require ES5 or es5-shim.js). I then just replaced the few remaining uses of `_.last`, `_.each`, and `_.zip` with an equivalent piece of functionality.

I attempted to test the result but it was really hard to do that: We've changed most of the error messages provided by JSHint which means that the tests no longer pass. I guess we'll need to make sure things don't break once we bring it in to master.