Add Lo-Dash support, and general JS cleanup

This adds the [Lo-Dash](https://lodash.com/) to our JS libraries, giving us some nice support for a more functional style of programming.

There are a couple places where we could use Lo-Dash more, and there are definitely places where we could just refactor the code to be somewhat more functional (and make it look better, and be more idiomatic, and other stuff).

One of the more hidden goals here was to also do less DOM manipulation, and rely less on jQuery, especially things that are asynchronous, that don't need to be.