Add OS X proxy icon to title bar

Fixes #1891.

Test Plan:

  * Opened Atom window in directory, verified directory icon shows up
  * Opened a file and verified icon changed
  * Right clicked icon, verified menu appears
  * Drag file to terminal and it pastes the file path (yay)
  * Opened a new Atom window and opened some files in that to make sure that
    it didn't change the original window

I didn't add any specs for this - advice welcome here. I also haven't tested
on Windows or Linux but it looks like `setRepresentedFilename` is a noop on
those platforms.
path -> proxyIconPath

Test plan:
Crossed fingers
Implement setDocumentEdited too

As requested by @philipgiuliani

Test Plan:
Opened an existing file and made a modification. The icon fades at the same
time the tab close button changes to a circle. Undo makes the icon opaque
again.
Don't use project path as fallback icon for item with no path

Stops the project folder icon appearing in places that don't make sense
like settings and new files.

Test Plan:

  * Opened settings and didn't see the project folder icon
  * Closed all tabs and saw the project folder icon
Add confirmation dialog to checkoutHead

There have been a few reports of files mysteriously going back to the
last version in the tree. My theory is that it is because of people
fat-fingering the Undo command because the default keyboard mapping is
too similar. This will at least prevent most accidental data loss.
Add config option for checkoutHead confirmation

Per the discussion with @kevinsawicki in #3168, I have added a config
option `editor.confirmCheckoutHead` that defaults to `true`. When the
`editor:checkout-head-revision` command is executed, a confirmation
dialog now shows that states which file is to be reverted and asks the
user to "Revert" or "Cancel". If the config option is set to `false`,
the old behavior, simply reverting without prompting, is used.

I also added tests to ensure that the confirmation dialog is displayed
or not in the right configurations.
Add a step to revert unsaved changes

I took the key part from PR #3183 and added it to the post-confirmation
flow.
Default the react mini editors to on
Default to on in the specs
Merge pull request #3169 from lee-dohm/ld-checkout-head

Add confirmation dialog to checkoutHead
Handle invisibles at the token level to fix char width measurement

Fixes #3188
Render correct classes on leading/trailing whitespace spans
Assign invisibles via config in editor-view-spec
Add specs for firstNonWhitespaceIndex and firstTrailingWhitespaceIndex
Preserve hasLeading/TrailingWhitespace when copying lines w/ invisibles

This fixes the styling of the leading whitespace of folded lines
Determine the endOfLineInvisibles for each TokenizedLine
Render end-of-line invisibles based on state of TokenizedLine
Remove handling of invisibles from EditorComponent
Make Editor::moveCursorToFirstCharacterOfLine work with invisible chars
Run animation frame after toggling invisibles in EditorComponent spec