EngineDelegate done

Now the API exposed to algorithm writer are kind of stable, maybe the last change is we will add some more arguments in creating the engine.