More reporting changes

This is a step towards simplifying reporting. It introduces a new interface `ITestResultProcessor` which defaults to the `ConventionReportTextRenderer` but can be overridden when calling Convention.Is.

There can only be a single `ITestResultProcessor` per test, and this result processor is used by the `IResultsProcessor` to format the result of the test, for example when I tell Convention Tests to use the CsvReporter, then the Approval processor will be approving the output from the csv reporter.

This also introduces a markdown reporter (which is not wired in anywhere yet, but was thinking about supporting `[assembly: ConventionReporter(typeof(MarkdownReporter))]` sort of syntax which would allow users to easily configure additional reporters. Then the html reporter would not be hard coded, it could simply be used if the user wants it to be.

Finally, this improves the html reporter. I started going down the road of reporting the types which conformed to the convention, but then am unsure because this could be going back to the pass/fail support in reporters. I just stopped but left the changes I had made in here to get feedback.

I am pretty happy with these changes, except the last one, I think they are good if we changed reporters to also report failures (like bddfy). Anyways, happy to hear your thoughts. It does show off more complex formatting of data which is nice, but not really sure of the use case for doing this now =\