Adds support for transaction event handling in the kernel.

  o Moves relationship tx state handling into TxStateImpl
  o Moves property state handling into TxStateImpl
  o Introduces mechanism for adding before/after commit hook to KernelTransaction
  o Above is used for TransactionEventHandlers
  o If there are user-registered listeners, TransactionEventHandlers takes a snapshot
    of tx state at commit time, and uses that to present to user.
  o Adds support for listing changed labels in TransactionEventHandler.

  Remaining:
  o Cache invalidation for properties and rels should be done by commands.
  o With that done, no more items remain to remove legacy tx state and stop polluting
    the global cache.
Merge pull request #1953 from jakewins/2.1-kerneltxevents

Adds support for transaction event handling in the kernel.