Async-ify SbtClient socket errors

The problem here was that SbtClient randomly threw SocketException
when you called close(), and this meant API users had to catch it
all over the place. Instead, we want requests with a reply
(things returning a Future) to fail the future, and requests with
no reply to just fire-and-forget (ignoring any socket exceptions).
Clean up private sendJson wrappers in SimpleSbtClient
Merge pull request #131 from sbt/wip/havocp-socket-error-in-client

Async-ify SbtClient socket errors