Renamed type testFunc to TestFunc

To comply with standard naming conventions
Cleaned up builder code
Renamed to ExampleGroup/Example names

These names are better at describing what they contain. The old name,
TestContext, will be reserved for describing the runtime data for an
individual test.
Created skeleton TestContext and passes it to tests
Changed exiting test code to be more generic

By changin 'fun ()' to 'fun _' the code becomes more tolerable to changes
in the framework, e.g. passing a test context to the setup code