[WIP] Don't drop the last exception by fake futures

Addresses #208. The problem is the exception origin is lost when it is re-raised by the future. This breaks the API, but disabling the asynchronous execution is anyway done only by debugging, and so I don't really care if `.join()` doesn't work as long as I see quickly where my exception comes from.
There are workarounds, e.g. via `sys.exc_info` and `traceback` module. We can print the stack trace of the last exception and then set the exception for the Future instance. But that seems to me like over-thinking a simple use case: to have a debug mode where one sees the origin of exception, which was the reason for `DISABLE_ASYNC` in the first place.