Functional testing framework and basic tests

This change adds the beginnings of a comprehensive functional testing
framework for ClusterRunner. This code is heavily based off of the
previous framework we had in a separate repo (ClusterTester) but has
been mostly rewritten and expanded to do more verification on the API
and filesystem results of a build.

I plan to add more tests and framework code, and we should also add to
these as needed, but wanted to get this out for feedback as it stands.
Yay for test fixtures!