Add TCP Keep Alive options to TcpInput/TcpOutput

Implements #864 by adding toml config options to enable TCP keep alive for both input/output plugins. I implemented it in the most straight-forward way of casting the `*net.TCPConn` type. This means the option can't be used in unit tests because of the use of `MockConn`, but the mock object can still be used in tests. I modified the listener in `TcpInput` to explicitly use `net.ListenTCP` and verified the use of a "tcp" dial in `TcpOutput`, so the only types of connections outside of unit tests that should reach that code are `*net.TCPConn`, but it is worth a review. I could add some reflection for safety if wanted.

Adds two toml options:
```
keep_alive: false|true
keep_alive_period: <seconds>
```
I realize it's unlikely (and pathological) for this to not be a TCPConn, but it's still maybe a good idea to use the alternate type coercion spelling:

```go
    if t.config.KeepAlive {
        tcpConn, ok := conn.(*net.TCPConn)
        if !ok {
            return errors.New("KeepAlive only supported for TCP connections.")
        }
        tcpConn.SetKeepAlive(t.config.KeepAlive)
        tcpConn.SetKeepAlivePeriod(...etc...)
    }
```

This will cause Heka to shut down cleanly w/ a useful error message instead of panic if a non-TCP connection slips in there somehow.