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'd like to say we should change this spelling too, but this one is trickier b/c returning an error here will just cause the BufferedOutput to retry the connection, which is not what we want.