Single thread pulling updates on HA machines

Moving from an HA communication design where updates gets streamed from
the master on most individual requests coming from slaves. This design
caused lots of duplicate transactions being streamed from master to each
slave, specifically if slaves issued write requests to the master.

Moving to a design where slave communication with its master does not
stream back transactions, except when doing store copy. Instead master
returns a transaction obligation saying which transaction id that must be
applied in order to continue. The slave will notify the single update
puller about that and will in turn be notified by the update puller
when that transaction has been applied. Many requests can poke the update
puller simultaneously and transaction pulling will piggy back on each
other, since there's only one thread pulling.

Benefits include:
- No code explicitly dealing with and preventing pull storms
- Less network communication with master
- Less load put on master
- Possibility for more optimizations regarding applying updates on slaves
  since updates are pulled in a single thread only.
Removed unnecessary TxIdGenerator abstraction
Slaves applies transactions from master in batches

by having a specific TransactionAppender that doesn't do auto-forcing.
And since there's only one thread on each slave receiving transactions
from its master they are queued and applied in one go now and then like:

- append all queued transactions to log
- force log
- apply all queued transactions to store
Splits UpdatePuller into two roles: obligation fulfiller and update puller
Merge pull request #3236 from tinwelint/2.2-single-update-puller

[2.2] single update puller in HA