Overload Unittest_TestCase to make sure that we only call teardown
when setup was called - this should catch cases where we forget to
call parent::setup in our tests's setup.  It doesn't (yet) catch the
case where we forget to call teardown.
Switch over to using @expectedException annotations on tests that we
expect to throw an exception, and then delete a bunch of boilerplate
code.  Not all exception-throwing tests are applicable for this since
in some cases we expect to throw multiple exceptions or take special
action on the exception.
Orphan Albums_Controller_Test and Photos_Controller_Test since their corresponding
controllers went away.  We'll need to rescue the tests out of here and put them
in the right place.
Finally get around to creating an exception hierarchy.  Gallery_Exception is
our base exception, with Access_Exception, G2Import_Exception and Rest_Exception
extending it.