Implementation of guaranteed delivery from ForwardOutput to ForwardInput

This patch provides "At least once" transferring on out/in-forward protocol.

This pull request is re-request of https://github.com/fluent/fluentd/pull/422.
And added patches below:
 * rebase w/ v0.12 code
 * use `chunk.unique_id` as ack value
 * implicit configuration variable: extend_internal_protocol
  * assume from other configuration values
 * default ack timeout: 190secs from linux SYN_ACK defaults
 * raise error for ack timeout to retry to send

Extracting this code to method, e.g. `configure_protocol`, is better?
It is useful for creating new protocol implementation using inheritance.
Maybe, extracting `send_data`'s `if @extend_internal_protocol` block to method, e.g. `handle_extend_protocol(res, chunk)`, also is needed.