[SPARK-2583] ConnectionManager error reporting

This patch modifies the ConnectionManager so that error messages are sent in reply when uncaught exceptions occur during message processing.  This prevents message senders from hanging while waiting for an acknowledgment if the remote message processing failed.

This is an updated version of @sarutak's PR, #1490.  The main change is to use Futures / Promises to signal errors.
Take a look at the next line: `managerServer` has a handler for processing received messages, but that handler just crashes by throwing an Exception.

In this test, `managerServer` is the remote server that crashes while processing messages, while `manager` is the "client" that sends a message to that buggy server.  Prior to this patch, `manager` would either hang or time out in this error condition, rather than raising an exception.