neubot_asyncio: implement asyncio.wait_for()

This is needed to implement connect() timeout using Python3
asyncio API as follows:

    future1 = asyncio.async(loop.create_connection(lambda: asyncio.Protocol(),
                            "www.example.com", "81"))
    future2 = asyncio.async(asyncio.wait_for(future1, 3.0))

To implement wait_for(), I needed to change the implementation
of _Handle to make _Handle.cancel() idempotent.