Add helpers to create lines

With this we can create either a horizontal or vertical line, and don’t need to manually set a constraint for its width/height.
Use horizontal/vertical line creators
Add method to move focus to document or file browser
Add Navigate → Move Focus menu item

This has ⌥⌘⇥ as shortcut so should make it easier moving to file browser and back.
Fix “Go to Favorites” (wrong URL used)

The URL constant for the favorites location was setup using oak::application_support() but done before the app support folder was initialized (due to the setup function being marked as a constructor).
Add method for searching file browser folder
Fix missing open / modified status in file chooser

This only worked for untitled files since we no longer keep document UUIDs for documents with a path.
Use divider lines in root view

Previously we placed the views with a one point gap between them and had the superview fill the background. This works fine, but has the somewhat theoretical disadvantage that the superview then needs to implement drawRect: and for performance reasons declare that it is “opaque” which means subviews can’t use the (true) window background, should they want to.

Also add a preferences key for “tabs above document” (issue issue #214), but not hooked up in this commit.
Tab bar above document option

This change adds new option for showing tab bar only above document, so the
file browser header lines up with tab bar.

File browser header height reduced by 1 pixel to match tab bar height. It also
draws optional top divider when in same line as tab bar
Initial divider colors were wrong for inactive windows
Add bug tracking ID annotation
fixup! Improve scroll when selecting units
Improve autoscroll when drag-selecting outside viewport

When user drag-selects and moves mouse outside the viewport, we do not want to use ‘ensureSelectionIsInVisibleArea:’ because that method looks only on the selection, particularly the non-anchored end-point (and works differently for unanchored selections). Instead we want to scroll the point corresponding to the mouse position inside the viewport.

Fixes #475.
Replace live search xib with code
Use last string when bringing up incremental search

Closes #631.
Use “standard” divider above incremental search
Add OakGradientView

This simply draws a gradient background but supports alternate colors for when the window is inactive.
Make file extension filtering more intelligent

Previously, the extension matching regex only matched one extension.
Now we match all of the extensions.

Searching for an extension previously would only show files with that exact
extension. Now, when you search, it will perform a substring match.

This means that if a file has multiple extensions (e.g. .html.erb), searching
for just one of them will yield a match, and if you include both extensions only
those files with both extensions will match.

This is better for rails projects especially since they use multiple extensions
for their assets and views (e.g. .js.coffee, .css.scss).

A search for:

name.html will match:
name.html.erb
name.html

name.erb will match
name.html.erb
name.erb

name.html.erb will match:
name.html.erb
name.erb.html

This patch is public domain.