Fixed rakefile
Simplified evaluation of subject
Let RegisterDisposable return the original value

Simplifies some of the calling code a bit because it doesn't need to store the
data in a temporary value
Extract WithSubject function

Reduces complexity of the subject evaluation
Removed types specification from DoRun arguments

In an effort to remove the dependency from Example to TestContext types, the
Example types go to a higher generic state.

The change in this commit prevent said change in propagating to the run
function arguments
Alternate context implementation
Changed constructor to just take metaData
Made ContextData immutable
Extracted create function in spec

So we only need to change one place in the spec, when the function for creating
a test context changes
Implement IDisposable on TestContext

Simplifies cleanup in runner
Extracted TestContext functionality from interface

Attempt to reduce coupling, as the examples had a dependency to the entire
TestContext, including implementation. Now they only depend on an abstraction
specifying the operations that can be performed on the test context.