Ensure we remove ourself from all observing

The file browser was still observing FSItemDidReloadNotification in its dealloc. Prior to ARC we used ‘self.outlineView = nil’ which removed us as observer, but after ARC we no longer execute that line.
Indicate modified status in file chooser
Use std::inserter helper function
Use file’s existing icon when zooming it
Use C++11 for-loop instead of macro
Introduce API for getting “scm variables”

This is both convenience, since we setup the TM_SCM variables in several places, but will also allow to register for changed variables (and thus, fetch branch name in a thread).
Use scm variables API
Untitled files would be prefixed with a null string
Update SCM variables with status
Let DocumentController provide SCM scopes
Avoid editor_t::variables for getting selected text
Don’t setup variables in test proxy
Replace custom code with kSelectionExtendToWord
Skip modified tabs when opening with “close other”
Don’t re-use scratch document for already open documents
Opening multiple documents selects the last one

This way ⌘W can be used to close the current document and move to the “next” one which was part of the set opened.
fixup! Optimize path::disambiguate
Cache custom icon images

Also fix it so that a file named ‘gen_html’ doesn’t get the HTML icon (as we no longer use path::rank for finding the best icon).
Add API to OakFileIconImage

This allows manually setting up SCM status, link badge, and similar, which avoids having OakFileIconImage do any disk access.
Let file chooser setup OakFileIconImage

This makes it a lot faster as we don’t need to stat the files etc. Presently though there is no SCM badging.