WL#6630: Semisync separate acks collector

Affects: Server-5.7   —   Status: Complete

Objective: optimize replication delivery and the server-to-client response time.
See WL#6355 for related tasks.

O1. to improve semi-sync communication framework

The current semi-sync design is subject to Dump thread hiccups because the one
thread dispatches 2 different and quite hot task - replicate
replicated transaction events to slave and release the connection to
respond back to the client):

                    ack
              ..............
              V            :
    Conn -> Dump ------- > IO
     ^        :  replicate
     :........:
       release

Dump thread could be a real bottle neck. It can't proceed with 2nd
transaction until the 1st one has not yet been acknowledged from the
slave.  Obviously the 2nd transaction propagation plus ack time,
contributing to the response time to the client, is suboptimal.  It's
reasonable to claim that replication throughput is suboptimal as well
for the same reason of hiccup-prone design.

Alternatively, a special ack Collector (Col) thread could be deployed
on the master that would redistribute acks to release waiting
Connections:

    Conn_2             ack
      ^...... Col <...........
      V                      :
    Conn_1 -> Dump ------- > Slave
      ^        :
      :........: