Change Future API to expose result(), cancel() and cancelled()

Implement the interface of concurrent.futures()
This looks weird :)  Can you do something like:

    http_client = Mock()
    http_client.setup.return_value = None