TS-2089: introduce configurable collation preproc threads

We found that CPU of logging thread could be easy to reach up 100% in
collation host, but disk IO was low at the same time.

The bottleneck of logging thread is that some preprocessing job, such as
convert LogBuffer to ascii text, consume so much CPU time. And more
worse, the write() operation will block logging thread.

So this patch try to split logging thread into two parts:
1) Configurable preproc threads, which are responsiable for processing all
   of prepare work, and then forward the preprocessed buffer to flush thread,
   or send them to CollationClient/HostSM.

2) One Flush thread, it will consume preprocessed buffers and write them to
   disk. In our testing, one flush thread is enough for us.

TODO: This patch supports only one flush thread, we can improve it to
      "one flush thread per file/disk" in the future.

== How to configure ==
The number of preproc threads is 1 by default.

Please modify "proxy.config.log.collation_preproc_threads" option to
change it.

Signed-off-by: Yunkai Zhang <qiushu.zyk@taobao.com>
TS-2089: Fix typo when rebase patch

I'm sorry for this mistake when I rebase patch to master branch.