IWebSocketConnection can run a callback when a message has been sent

We have a scenario where we need to send a large message in chunks and don't want to block up the socket while doing so. With this functionality we can send a chunk then wait until it has been fully transmitted before sending another, this allows other messages to be sent over the pipe in the meantime.

If you can think of a more appropriate way to implement this functionality I would be happy to implement it, but this seemed the simplest.