Quick refactor of net.Conn plumbing into Client type

Error handling is definitely tripping me up in Go. in Client.Read(),
I wanted a simpler interface than having to check the error all the time
when Read() is called, so I'm just returning the error string to the caller.
This is probably bad practice and I should just do the typical double
return value with the error.