Make sends non-blocking

Now the communicator will do non-blocking sends and queue messages
that aren't completed right away