Migrated from Boost.Test to the Catch unit-test framework.

This removes Boost as a build dependency, eliminates weird problems
with `make check` on certain platforms, and generally makes life more
pleasant.

See: https://github.com/philsquared/Catch