Tests were failing, but "rake test" didn't notice

There are two related fixes in here:

   1. I noticed that the test task (and the run_tests.sh script that it calls) doesn't actually fail/return a nonzero exit status if there are failing tests.  I've changed that here, so that if any tests fail it would actually show up as a nonzero exit status from "rake test".
   2. I noticed the problem above because some of the tests were actually failing!  These failures weren't due to bugs in timecop so much as due to the way one of the tests monkey-patched `Time.zone` and didn't clean up after itself, causing failures in later test cases.  I incorporated one of @stopdropandrew's commits in #70 in order to help that.