Don’t merge adjacent non-empty selections

This improves the behavior of #3433
Merge pull request #3440 from atom/ns-exclusive-selection-intersection

Don’t merge adjacent non-empty selections
Unmount component when EditorView is detached

Fixes #3431

When a pane item is moved to another pane, we *detach* the associated
view but we don’t fully remove it. This was to prevent removing a view
when it was used as the pane item directly. However, this was causing
the editor component not to be unmounted, which caused leaks and
incorrect measurements.

We need to unmount the component, but we don’t want to destroy the
editor. So I’ve moved editor destruction to the wrapper view for now,
and I only do it when the view is actually removed.

Ultimately, we need to have a 1:1 relationship with pane items and their
views and only allow a pane item to appear once in the pane tree. Then
we can recycle the same view and avoid this confusing situation where
the old view is detached and a new view is created.
Upgrade to markdown-preview@0.101
Fix comment
Fix comments
displayBuffer::lineForRow -> tokenizedLineForRow
lineForBufferRow -> lineTextForBufferRow
tokenizedLineForRow -> tokenizedLineForScreenRow
lineForScreenRow -> tokenizedLineForRow

The method was severely mislabeled
Remove unused method
row -> bufferRow for clarity
DisplayBuffer::linesForRows -> ::tokenizedLinesForScreenRows

Clarity!
Rename unused method
Editor::lineForScreenRow -> ::tokenizedLineForScreenRow
lineForBufferRow -> lineTextForBufferRow
Editor::linesForScreenRows -> ::tokenizedLinesForScreenRows
Deprecate Editor::lineLengthForBufferRow
Add Editor::lineTextForScreenRow()

Closes #3055
Gracefully handle the case when there is no screenline