Fix bug in tx state management for labels.

When performing multiple add/remove operations for the same node/label tuple,
the tx state would hiccup, because DiffSet had a discreptancy between how
remove+add and add+remove stacked. Add+remove would lead to a net zero change,
while remove+add would lead to an element added. Now both orderings of
operations lead to a net zero changeset.

Also move population of recordchangeset out of TxState, it should not be there.
Instead, populate recordchangeset at commit time with the end-result changes
as calculated by txstate.