Replace cppunit with the googletest framework

The GTest framework has a more active support base, and natively
supports CMake. Introduce it as an external dependency (using CMake's
ExternalProject_Add), replacing cppunit and porting the associated unit
tests.
Merge pull request #372 from jdduke/gtest_pr_final

Replace cppunit with the googletest framework
Merge remote-tracking branch 'upstream/master'