Initial support of socket timeouts
Implement timeouts for all socket operations
Simplify timeout mechanism

Removes deadlines for timers and instead assumes that if we're receiving any
new data, the connection is active.
Ensure we convert :wait_for to seconds
Remove extra instance variables we didn't need
Use length
Ensure we are using nonblocking operations
Merge remote-tracking branch 'eric/socket-timeouts' into feature/socket-timeouts
Use an explicitly not-valid requests to test ClientError
Add support for the STATUS command
spellcheck
Add synchronization for setting up tests.
This should remove a few intermittent errors
switch to using fetch to assign defaults
Extract out the creation of the socket and its options.
Switch to Addrinfo objects
Use minutest reporters
Update to latest dependencies
Back out using Addrinfo until 1.8.7 is deprecated
back out reporter until 1.8.7 is deprecated
Add handling of ECONNRESET