Add test to illustrate the problem

See #2526
Change line commenting to ignore blanks if any non-blanks

Fixes #2526

This slightly alters the heuristic for deciding whether to uncomment
or to comment blocks of code. Previously, it would key off the first
line of code and only if that was commented would it check the other
lines. Now it checks all lines of code and uncomments the block if all
non-blank lines are commented out.
Use imperative style and standard JS regex

Based on pull request feedback
Unindent only if the tab is at the start of the line
:white_check_mark: Add test for outdenting with tabs after normal characters
Upgrade find-and-replace for React fixes
Upgrade git-diff to update diff correctly after comitting
Update grim and its related modules
Dedupe grim
Move the cursor on pageUp / pageDown

Previously it was only moving the scrollTop, but not the cursors. 
Affected on the react editor.

Refs #2423
Fix gutter width

When you had a 1000 line file and you fold everything
into 10 lines, it would make the gutter width only large
enough for the 10 lines, so line 999 wouldnt properly
fit in the gutter.

Refs #2423
Merge pull request #2588 from atom/bo-fix-page-up-down

Fix pageUp and pageDown in the react editor
Merge pull request #2584 from atom/iz-fix-tab-unindent

Outdent only if a tab is matched at the start of the line
Merge pull request #2571 from lee-dohm/bug-2526

Change line commenting to uncomment if all non-blank lines are commented out