EngineInterface::enqueue* now return a function that can be used to cancel the enqueued task (fixes #46)