Add TextEditorElement and make TextEditorView a wrapper around it

This is the next step on converting all internal views to custom
elements instead of using SpacePen. The TextEditorElement instances
are associated with ::__spacePenView fields that are used for supporting
legacy access paths via atom.workspaceView.
Destroy model if TextEditorView is explicitly removed for compatibility
Assign attributes passed to TextEditorView constructor
Update settings-view to fix specs
Null guard ::element in TextEditorView::component synthetic property
Update wrap-guide to fix specs
Forward .abortKeyBinding() on CommandRegistry events to original event
Move editor commands to global command registry
Add text-editor-element-spec and fix handling of focus and attributes
Fix checkout-head-revision command
Upgrade to language-css@0.20
Upgrade to tree-view@0.129
Only try selector based listeners if target has .webkitMatchesSelector
Call dispose not off
Use disposables for keymap and menu deactivation
Do not access space-pen view when no elements
Upgrade find and replace
Merge pull request #3735 from atom/ns-text-editor-custom-element

Convert text editor to custom element
Clone menu items before merging them in in menu-helpers
Store specificity based on the cloned item instead of the original