I think I'd prefer if the 'open as text' logic lived in editors.dart. So, ace.dart would only know about editing text files and which files that it considered to be text. We could even set it up so that there was a first-class `Editor` subclass that could 'edit' unknown file types. When it's edit-as-text button was hit, it could close itself and re-open the same file in the ace editor.

It's a bunch of refactoring to this CL; if you agree w/ this change please add a TODO: