refactor the editor and editormanager classes

Some refactoring to the `Editor` and `EditorManager` classes. The goal of this refactoring is to move more of the functionality into the Editor class (and subclasses), and move all Ace specific knowledge out of the EditorManager class. All Ace specific knowledge should be encapsulated into the `AceEditor` subclass. I want to split the refactoring into a few PRs. The next one up would make Editor instances responsible for persisting and restoring their state between sessions.

The behavior of tabs and opening files remains unchanged.

@dinhviethoa