layout: Fix bol_as_eol for case where range length is 0

bol_as_eol was meant for non-empty ranges, but the only place where
empty ranges were attempted with bol_as_eol was for Zoom tracking,
and it seems like I did not re-test Zoom after making the bol_as_eol
commit.

Fixes textmate/bugs#4
Fix textmate/bugs#5

When setSelectionString is called during editing of text (like inserting
or deleting a character), it catches layout in a semi-consistent state
where horizontal position of individual characters cannot be determined.
Therefore during such events, we cannot pass the correct screen position
to the call to UAZoomChangeFocus.

So let's do the UAZoomChangeFocus call after this iteration of run loop.
This ensures everything in layout that had to update has updated when
calling UAZoomChangeFocus, thus enabling us to provide correct horizontal
screen position.
Optimize Zoom support a little bit

This makes Zoom support avoid doing all 2 conversions between UTF-8 to UTF-16,
and replaces call to rect_for_range with call to rect_at_index, which is
more efficient.

Note that this is a typical micro-optimization not resulting from any
actual performance measurement, but just from a desire to have a lean
code not doing redundant work.
VariablesPreference: Disable delete button when table is empty
VariablesPreferences: Abort editing before deleting a row

This prevents `tableView:objectValueForTableColumn:row:` from throwing an exception (index beyond bounds) when the user deletes the last row while it is being edited.
Support a "--warn" switch for gen_html.

Default is to suppress any warnings for unassociated GitHub profiles.
Adding some 2012 committers.
QuickLook: Handle thumbnail generation

Read at most 1 KiB or 50 lines of a file and render the attributed string in a bitmap context.

The theme is set to Mac Classic to ensure a white background for best look when the previews are used as icons in Finder.

The user’s default fixed width font in size 4 is used. With this font size only around 7 lines are shown, so we need to make it smaller, but we probably want to scale down the result to allow fractional line heights.

A lot of code is copy/pasted from the QuickLook preview generator.
QuickLook: Check for cancellation

Add a bit of redundant code but it's useless to continue doing stuff if the request is cancelled by the user anyway.
QuickLook: Abort preview when type can't be determined
Set required version of ninja to 1.5
Detect abnormal exit when loading plug-ins

Currently we ask user about skipping it, but it might make sense to also add an uninstall option.
Avoid using Application Support for temporary file

Since the user’s library folder might be on a network we should probably avoid writing to it unless strictly necessary.
When clearing marked range, ensure pending range is also cleared

This fixes an issue with complex input managers.

Using Chinese pinyin input and entering ‘ci’ followed by ‘1’ to insert first glyph would insert the glyph (‘刺’) and then set the pending marked range (0-2), which would have caret end up in the middle of a multi-byte sequence.
Remove rmate from .gitmodules

We removed the actual sub-tree from the repository back in 2d4d4729d26ddef40db4bf09ed811a22e1875787.
Make ⌘F default to 'Selection' for multi-line selection

Previously using ⌘F with a multiline selection would automatically set the “in”
pop-up to “Document”. This is no longer the case, but can be brought back by
running: `defaults write alwaysFindInDocument -bool YES`
Use AXValue of OakChooser's cells for accessibility announcements

Previously we used [NSCell stringValue], which is not suited for cells with
custom implementation for AXValue accessibility attribute.
Improve accessibility for OakBundleItemCell

More specifically item's displayed keyboard shortcut or tab trigger is now
announced by VoiceOver.

Implementation of accessibilityAttributeValue:forParameter: returns nil for
some attributes. This is a hack to avoid doing tedious adjustments of certain
parameterized attributes (like AXStringForRange, AXAttributedStringForRange,
AXBoundsForRange, AXRTFForRange) for string AXValue that is extended (appended)
by extra information at its end in accessibilityAttributeValue:. To get an idea
how tedious this is (even though our case is a bit simpler by not *prepending*
anything before the AXValue, and not being an editable field), look at
OakLinkedSearchFieldCell. This looses the ability for the user to interact with
the text, but considering how seldom this will be used (if at all), for now
this seems acceptable.

This is needed because VoiceOver asks for the *StringForRange attributes and if
implemented, will never query AXValue (which is where our custom behavior is).

In the future when tables will be migrated from cell-based to view-based ones,
the tab trigger or shortcut could be a separate NSView, which would probably
allow for much more elegant solution to this problem.
Implement basic accessibility for OakKeyEquivalentView

I experimented a lot with different combination of attributes, this one works
reasonably well compared to the others (even though it is less feature
complete). I may revisit experimenting with it at some later point.
Remove unused code

This should have been removed in 36cfb177a5dcb5c0aef25ee0cfe8a052ba9c7486.