Style non-shadow DOM editor with it’s own style sheet

Trying to style both modes of the text editor with the same style sheet
is proving to be more trouble than it’s worth. This prepares the shadow
DOM style sheet to diverge more radically to enable the background color
to be overridden from the outside more easily.
Clean up shadow-DOM-specific text editor style sheet
Store useShadowDOM setting when TextEditorElement is created

Rather than reading it repeatedly, since the value could potentially
change over time.
Remove .editor class to force themes to style background via :host

The goal is to allow the editor’s styling to be overridden as follows:

atom-text-editor {
  background: black;
  color: white;
}

If we retain these classes, themes will continue to style the root
element of the editor and destroy the ability to style the editor in
this way. You would instead have to do the following:

atom-text-editor::shadow .editor {
  background: black;
  color: white;
}

This is way less intuitive and confusing for people.
Create an empty TextBuffer if needed in TextEditor constructor
Add ‘mini’ attribute to TextEditorElement if .isMini() is true on model
Add missing less imports to pass lesslint
Replaces usages of .mini selector with [mini]
Upgrade bundled themes to support the shadow DOM
:arrow_up: settings-view to support shadow DOM in mini editors
:arrow_up: Bundled UI themes to support editor shadow DOM
:arrow_up: less-cache for /deep/ combinator support
:arrow_up: atom-dark-ui for scrollbar styling across shadow boundaries
:arrow_up: less-cache to fix import detection bug
Automatically upgrade syntax themes for shadow DOM compatibility

If a given selector in a stylesheet targeting the atom-text-editor
context references `.editor` or `.editor-colors`, we automatically
replace these with the appropriate `:host` pseudo-class expressions.
If the selector already contains the :host pseudo-class, we perform no
upgrade.

Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Add specs for atom-text-editor shadow DOM selector upgrades

And cover one more case with `.editor` plus pseudo-classes

Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Spy on console.warn to prevent spamming in the specs
Upgrade existing selectors after attaching atom-styles element

Style elements don’t have a .sheet property until they are actually
attached to the DOM.

Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Merge pull request #4165 from atom/ns-shadow-dom-style-updates

Make it easier to style atom-text-editor from outside its shadow root
Clean up TextEditor::pasteText