When background garbage collector is active (SuperServer mode with gc_policy set to "combined" or "background") all worker
threads could notify GC thread about data page with record ready for cleanup. Before FB3 we have single-threaded SS engine
with no mt concurrency between worker threads thus synchronization was not required.
In FB3 we have multy-threaded SS engine. Therefore we need to protect internal data of Garbage Collector from concurrent
access. Initial implementation was very simple and used exclusive sync's in most operations. Initial testing shows no contention
in Garbage Collector therefore i decided to leave it as is.
Latest testing (using SSD and FW=OFF) shows that notification of garbage collector by different threads could be serialized
and become a kind of bottleneck (of course with highly CPU-bound kind of load).
Goal of this ticket is to avoid usage of exclusive syncs in hot points as much as possible.