Add a slew of tests and get coverage report running by default

Sorry for the large commit here. These are some changes I worked on awhile ago and never got them as far as I wanted to, but since I'm working on getting some bug fixes in, I wanted to get these in too. Not a lot of actual code changes, mostly just adding tests, changing some build ordering.

There is one piece I really want to call out though, I added a module for mocking out the google maps API in a very testable way. It's similar to the mock that was in place, but requires much less code in the actual unit test, while still providing the flexibility to define things in-test if needed. I wanted to run this by you guys before pushing it up, so comments welcome!