*: add StreamTransport

StreamTransport is the transport used for streaming. Its read has fixed
timeout set and returns error when it times out. This helps stream client
to stop handle loop in time.

I have tested the change in AWS. When leader cannot connect to followers, the follower could stop handle loop after the timeout and elect the new leader. The change doesn't affect current operation performance.

I add StreamTransport in serverconfig now because it makes the least change and doesn't need to change tests a lot. I will rethink about it when refactoring rafthttp package.
move this out of listener.go