_eventloop: more correct exception routing

This commit modifies my asyncio code to match the behavior of
the real asyncio when an exception is raised by a callback set
to handle I/O readiness of a file descriptor.

To this end, I modified the code to always use the _Handle()
for wrapping delayed calls (not only timed delayed calls, but
also I/O delayed calls).

I needed to do that because in the real asyncio the exception
handler is called with a context containing an handle field.

This also answers my question on how one could unschedule a
pending I/O operation when the related callback fails.

On the go, I also removed an unused semi-public method from my
implementation of _Handle. In this vein, I also extended my
eventloop implementation to allow to set third party exception
handler functions. Also, I fixed the default handler to receive
the event loop as its first argument.

The following code was used on python3.4 and python2.7 to
make sure that my asyncio matches the real one::

    from neubot import neubot_asyncio as asyncio

    evloop = asyncio.get_event_loop()

    COUNT = 0

    def __callback():
        global COUNT
        COUNT += 1
        if COUNT < 7:
            1 / 0
        evloop.remove_reader(0)

    def __got_data():
        global COUNT
        print ("GOT DATA")
        if COUNT >= 7:
            evloop.stop()

    def __context(evloop, context):
        print (context)

    evloop.set_exception_handler(__context)
    print (evloop.add_reader(0, __callback))
    print (evloop.add_reader(1, __got_data))
    evloop.run_forever()