Test additions and resulting bug fixes

(I realized that I was missing a few test cases...which didn't pass when
 I added them. Then I realized that some of my other test cases weren't
 really testing what I thought they were testing. Then I had to redesign
 the way the script initializes itself to make it behave the way I
 actually thought it was behaving. This is what I get for not writing my
 tests first.)
Go to extraordinary lengths to isolate the system from the tests

(probably too far... if only chroot worked as non-root)

Also fix a few minor bugs in shunit2, exposed by my fumbling to
isolate the tests

Also stop using "grep -q" (in favor of just redirection)