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.
Added a Guard Clause to new ctor overload.
Implemented HandleRecursiveRequest method.
Added naïve implementation of Compose

on RecursionGuard. Missing: forwarding of recursion handler and comparer.
Handled Compose of only a single node.
Retained RecursionHandler from Compose.
Retained Comparer from Compose.
Chained a constructor.
Introduced NullRecursionHandler,

which is intended to replace NullRecursionGuard.
Implemented HandleRecursiveRequest.