Make client API for oak::server_t thread safe
Initialize shared spell checker during setup

The first time we ask for the shared spell checker it does some setup involving AppKit (creating the shared spelling panel?). While we already ensure that the spell checker is only called from the main queue, it seems this setup code must run on thread 0, which, when we are not in a Cocoa application, is not necessarily the thread used for the main queue.
Remove unused include
Use implicitly synthesized properties
Make outlineView:shouldExpandItem: a no-op for expanded items

Fixes #160.
Revert "The 10th tab now get ⌘0 as key equivalent"

This commit made the 11th tab get ⌘1 as key equivalent. Fixes #1078.

This reverts commit 5e6cfe8e1ef990d24100c4859c25948d37c8ee04.
Harmonize code

We effectively do the same thing 5 different places, so good if the code is identical (incase it needs to be revised).
Let transpose detect and swap words

The detection is done by a regexp match of ‘\w+\W+\w+’ allowing the string to optionally be wrapped in round, square, or squiggly parentheses.
Fix file browser menu item validation
Spelling suggestions can be chosen with 1-n
Fix crash when “close tabs” is sent to window with no tabs

It appears a window can hang around after its last tab has been closed. Such window receive notifications of items being deleted via the file browser, and will call the “close tabs” method in response to these, which does an out-of-range array access if no tabs exist.

The reason for why windows can hang around after last tab is closed has not yet been determined. It might be a retain cycle (bug) or a delayed release due to autorelease pools.

Fixes #1064
Improve application specific data in crash log

This makes it easier to automatically extract and index.
Dispose tree structure bottom-up to limit stack usage

With really long search strings, the recursive disposal of nodes would blow the stack
Add storage access info to crash reports
Checkin release notes
Don’t keep mutex locked when calling client code

The mutex was locked to ensure that the client object did not go away, but the client’s code may terminate the program which destroys the server_t instance and thereby the mutex itself, which would previously cause an assertion to trigger, since the mutex was locked during destruction.

In practice there is no issue with the mutex not being locked while accessing the client object, as “unregister_client” and “master_run” are both called from the main thread, except for tests, but here we do not unregister client objects before their requests have been handled.
Remove rforeach macro
Remove some uses of foreach()
Move crash reporter info support to own framework

This is to avoid cyclic dependencies since it was previously in a somewhat high-level framework, so everything that framework depended on, could not augment crash reports.
Add more info to crash reports