Add receive timeouts for reading protos

This allows us to time out when we're not getting responses back. The
client does not have a configurable timeout right now, but it should be
pretty in line with the rate at which the agent sends pings.