Initial doTapDump() implementation.

This is still a work-in-progress as it does not terminate the TAP
stream like regular TAP dump.
HandleMessage() now takes io.Reader param.

TAP message handler, in particular, would be occasionally reading for
TAP_ACK responses from the client.
Function doTapForward().
The doTapXxxx() functions take io.Reader param.
Send TAP_FLAG_ACK on end of tap dump.

With this change, cbtransfer is able to successfully receive tap dump
and server can know that client got everything.

    $ ./cbtransfer http://127.0.0.1:8077 stdout: -b default
    set 0 0 0 1
    1
    set 1 0 0 1
    1
    set x 0 0 1
    1
    set y 0 0 1
    1
    set z 0 0 1
    1
    .
    bucket: default, msgs transferred...
           :                total |       last |    per sec
     batch :                    1 |          1 |       41.6
     byte  :                    5 |          5 |      208.1
     msg   :                    5 |          5 |      208.1