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
Only try selector based listeners if target has .webkitMatchesSelector
Merge pull request #3735 from atom/ns-text-editor-custom-element

Convert text editor to custom element