Improve how we read data from the Wired socket connection.

The readData function now consumes a single, persistent goroutine
which will pass off processing to separate goroutines as data
arrives. This will hopefully fix the issue of messages from the
server becoming mixed together.