Scroll React editor all the way left when soft wrap is enabled

Fixes #2842
Merge pull request #2849 from atom/ns-react-fix-softwrap-scroll-left

Scroll React editor all the way left when soft wrap is enabled
:lipstick:
Account for padding-left on the scroll view when soft-wrapping lines

Fixes #2844
Merge pull request #2850 from atom/ns-react-account-for-padding-in-softwrap

Account for padding-left on scroll view when soft-wrapping lines in the React editor
Prepare 0.110
Stub out `Decoration::destroy` and `Decoration::update`
Autoscroll to cursor on undo

Fixes #2815

This commit changes our autoscroll strategy for cursors significantly.

Originally, we were autoscrolling whenever the cursor's marker changed
positions. This worked well, except we didn't end up autoscrolling when
the user *attempted* to move the cursor to an invalid position, such as
moving down at the end of the buffer, due to the fact that the marker
wouldn't change.

Then, we moved to always requesting an autoscroll whenever a position
change was requested via Cursor::changePosition. This missed out on
moving the cursor when inserting text, so we then also added an explicit
autoscroll call when inserting text.

This had the problem of not autoscrolling due to undo. So finally, this
solution combines explicit autoscroll in ::changePosition to capture
intent, as well as implicit autoscrolling whenever the cursor's marker
position changes due to a textual change in the buffer. This captures
undo/redo correctly.
Re-measure character widths when stylesheets change

Fixes #2845
Merge pull request #2851 from atom/ns-react-autoscroll-on-undo

Autoscroll to cursor on undo
Move from `addDecoration` -> `decorateMarker`
Merge pull request #2852 from atom/ns-react-remeasure-characters-on-stylesheet-change

Re-measure character widths when stylesheets change
Handle `Decoration::update`
Move serialization of active pane from Pane to PaneContainer

Fixes #2694
Fixel #2853

Previously, we were storing an `active` boolean for each pane. We've
had some strange bugs where every pane is serializing `active: false`,
which causes exceptions when loading up the stored data.

This new approach serializes the activePaneId on the PaneContainer
itself. Since the PaneContainer is the source of truth regarding the
active pane, it makes more sense to handle it here.

This unfortunately changes the serialization version for the
PaneContainer, so people won't have their state persisted after
upgrading. But it seems better than leaving cruft to handle the old
serialization situation.
Merge pull request #2855 from atom/ns-active-pane-deserialization

Move serialization of active pane from Pane to PaneContainer
Ignore more test directories
Add grunt task to log long paths in built app
Ignore more test directories
Ignore gaze from jasmine-node

This is only used when jasmine-node is being launched from the CLI
with --autotest/--watch which the bundled spec runner does not use
or expose.

This reduces all bundled paths to be under 200 characters relative
to the root install location.
Relative path might be missing