Implement a read timeout

No read timeout pretty much means that the client will never know when
it disconnected (unless it disconnected due to some error). This however
has a small issue, if the server doesn't get new files between the timeout
time it'll disconnect as well. I just have to actually implement the keepalive
part of the 'protocol' into the client for this..