Tame redundant tests.

All 18 test classes that extend `BaseTest` inherit the same two tests. A side
effect of this is that more than half of the assertions reported by PHPUnit
are from the same two test methods running over and over again.

I've refactored these test methods to live in more appropriate test classes.
I've also updated the `testIncludes` method to:

 * Use a data provider so all failures will be printed at once.
 * Give a nice error message instead of triggering a fatal error.
 * Use the autoloader since that's the preferred method for including classes.