Big changes to the tests.  The *_match functions now require a message, and there are now subtests to help pinpoint failures from the output