Allow Interfaces in Expect Annotation
Introduce the TestCase::{with,has}Provider API

Allows for setting of data providers on test cases.
Really rough first pass at data providers in AbstractTestCase
Revert "Really rough first pass at data providers in AbstractTestCase"

This reverts commit 0ebf56a88ac9c0ec6567ae85d962c5952328e007.
Introduce TestSuite::run
Allow Additional Arguments to be Passed to Tests
Add the {SETUP,TEARDOWN}_TESTCASE events
Introduce TestCase::getProvider
Deal with data providers in TestSuite
Make UnitTestCase Instances Cloneable

Namely: set the `testObject` to null so cloned instances don't share the
same instance.
Introduce TestCase Descriptors
Add data set descriptors in AbstractTestSuite
Push TestCase::getName Up Into AbstractTestCase

Let's us take care of adding the descriptors there as opposed to in
every TestCase implementation or in the output writer.
Rename Annotation::attach to Annotation::attachRun

We'll allow annotations to hook in and attach both on run and on test
case setup, so we need some different methods.
Setup Annotations on SETUP_TESTCASE event

And stub out DataProvider annotation.
Move hasValidMethod and hasValidFunction up into Annotation
Flesh out the DataProvider annotation class
Don't clone the clone
Use Data Providers in DefaultEmitterTest
Add Acceptance Tests for Data Provider Annotations