[2.2] Reduces overhead of transaction initialization

While doing so, fixed other things as well:
- Renamed NeoStoreTransactionContext --> TransactionRecordStateContext
- Renamed NeoStoreTransactionContextSupplier -->
  TransactionRecordStateContextSupplier
- Delays header information object creation until commit if there are
  changes
- Renamed LegacyIndexProviderTransaction -->
  LegacyIndexProviderTransactionState
- Decoupled LegacyIndexTransactionState from KernelStatement,
  it is now fully wrapped inside TxState
- Renamed method for checking whether or not the transaction had any
  changes from isReadOnly --> hasChanges to not collide term-wise with
  wether or not the transaction is marked as read-only
- More consise method naming in RecordAccessSet