Rewrite spec runner

The new spec runner runs every test suite within its own Ruby instance to
guarantee that only the gems that are necessary for that suite will be required
within that instance. This comes in handy especially when running Test::Unit 1
tests.
Automatic autohook
Remove ArgumentEqualityError as it isn't used anywhere
Make the classes of errors that RR generates substitutable

This is valuable for the Test::Unit and MiniTest adapters. We can't use our
error classes otherwise our errors appear as, well, errors within tests, instead
of failures as we would actually like them to appear.
RR errors now come through as failures in MiniTest and Test::Unit tests
Fix Test::Unit adapters to ensure teardown is run if RR.verify borks