Dynamic aceContainer instead of static one in HTML: fixes #3676

@devoncarew: Most of the changes in `ace.dart` are pure refactoring not changing any logic. The core of the change are 2 lines which I'll point out in the source comments. Sorry about the refactoring noise: the reorganized code was critical at some point of my experimentation, but became not critical in the end result. I think it's still tidier, but am absolutely willing to retract.

Explanation of what was going on: the static `div#aceContainer` was inserted in a wrong place inside the DOM: `AceManager` would rip it out and reinsert in a different place the first time an editor was needed for a file. Moreover, `AceManager` didn't even need the container to be anywhere in the DOM, or have any special attributes or associated CSS. At the same time, `AceManager` would create an `AceEditor` object inside the provided `#aceContainer` on startup even when there were no tabs opened, but with no tabs it wouldn't move the container inside the DOM to the right place. All of that resulted in a misplaced `div#aceContainer` with an empty editor protruding from under the rest of the UI in form of the weird line from #3676.
This is one critical part of the change: the `div#aceContainer` is now created dynamically by `AceManager` itself, and is not inserted into the DOM until it's really needed to edit a file.