Added unit tests for the CsvModel, and introduced more interfaces for better decoupling. Beginning splitting out file system/asset management from the RenderingController and moving it into the ReportService class.

Renamed a bunch of stuff, and moved stuff around.
Removed ReportService from RenderingController since it is not the controller's responsibility to generate reports. Changed RenderingController to use lazy yield generation of test runs just in case you're running a bajillion runs in a single report. Changed ownership semantics of the Bitmap objects that are passed around in the TestResult - now it's up to someone else to destroy them (unless the GC gets around to it). Wrote the ReportService::GenerateReport() method.
Report generation still works, now using the ReportService layer and not the old Controller-driven portion.
Closes #13 and closes #14. Finished the TestCaseGenerator class which means the CsvModel (and any model, really) is now detached from the ShellTestCase classes (so they could be broken out into a separate tool/utility at some point). Added a static class ImageUtils.cs which has a method that can be used to copy Bitmaps. This method is used for bitmap copying due to issue #14 because I didn't want to wrap classes around Bitmaps and their backing stream objects as it would get a little ugly.

Moved all the Bitmap copying from RenderingController into the IImageComparer implementation (ExhaustiveTemplateComparer being the only concrete one right now) because the controller itself should be dumb and only pass data along, and because the fact that images should be 24 bit RGB are specific only to that image comparer.

Added a method to the IRenderlyAssetManager interface FetchToRandomFilename which was needed for test generation since at the time of test creation, there wasn't enough data to generate a proper test name without querying the model, and that is just crossing interface lines too much.
Merge branch 'model-interface-unit-test-branch' into develop