#94 Throw an informative exception when trying to create an abstract class with public constructor
#94 Address issues raised in pull request
#94 Improve exception message and rename test type
Addressed a couple of Code Analysis warnings.
Moved test of creating abstract class with public

ctor to a separate test file, because I also want to add a test that
demonstrates how to get around the exception. That test will require a
test-specific nested class, so I think it's nicer to have that in a
separate test class, not polluting FixtureTest.cs.
Added a test that demonstrates how to work around

the issue of an abstract class with a public constructor.
Made an exception message more detailed.
Addressed more CA warnings.
Incremented patch version,

indicating that the addition of a more explicit exception message in the
case of abstract classes with public constructors isn't really a new
feature, but rather a refinement of existing behaviour. Some may consider
it a bug fix, although there never really was a bug.
made RecursionGuard a concrete class,

instead of an abstract class. The goal is to refactor towards composition
instead of inheritance. Ultimately, this means getting rid of the three
child classes currently deriving from RecursionGuard.

The first step is to make RecursionGuard a concrete class, but that also
means that some abstract members have been changed into virtual.
Currently, they aren't implemented, but that comes next.
Added a constructor taking an IRecursionHandler,

which is a new interface that will replace the HandleRecursiveRequest
virtual method.
Saved builder to field from new ctor overload.
Assigned default comparer from new ctor overload.
Added Guard Clause to new ctor overload.
Added Guard Clause to new ctor overload.
Added new, most greedy ctor overload

to RecursionGuard.
Saved recursion handler to field in new ctor

overload.
Saved comparer to field from new ctor overload.
Added a Guard Clause to new ctor overload.
Added a Guard Clause to new ctor overload.