Add EngineController to coordinate DS components

Previously DS components like LibraryServices, LiveRunnerServices, ASTBuilder, etc., have dependency. EngineController is to decouple their dependencies and to coordinate the interactions among them.