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>
```
We could just print a warning that KeepAlive won't be set instead and skip it? If someone is debugging, they should see it and if they don't, KeepAlive probably isn't too critical anyways.