Lazily instantiate DiffSets and HashMaps in TxState.

o Avoid instantiating DiffSets when checking containment in TxState
o Renaming methods in TxState to be more in line with Kernel naming scheme
o Instantiate *statesMaps in TxState lazily
Instantiate TxState lazily

o Replace TxState.Factory with TxState.Holder
o Make TxState clients check if state.hasTxStateWithChanges() to avoid object instantiation
Renames methods in TxState for clarity

o Introduce UpdateTriState to replace usage of Boolean
Merge pull request #978 from iansrobinson/2.0-streamline-tx-state

2.0 streamline tx state