introduce asynchronous API methods

Use of the asynchronous methods allows better performance when many independent commands are to be issued in succession, as these methods are able to pipeline requests over the WebSocket connection. The synchronous variants of the methods are reimplemented in terms of the asynchronous methods but continue to function as before.

Note: Client applications should no longer call Coinfloor.pump(), as the message pump is now started automatically in Coinfloor.connect(…).