Lots of work on setting up testing.

* None of its completed yet but there's way too many changes sitting on
  my local machine right now.