Lower memory overhead of recordchanges.changeCount()
Central transaction repository

Introduces a central component through which transactions are accessible,
"KernelTransactions". This is then used to force-stop running transactions
on database shutdown.

Also introduces usage of the new Marshland pool for transactions. This removes
the usage of two lower-level pools (record changes and lock clients), as those
components will now be tied to a transaction instance for the full lifecycle
of the database.
Merge pull request #2707 from jakewins/2.2-kiltx

Central transaction repository