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
Rework code to avoid strange crash

I’m seeing a crash in ‘-[OakDocumentView dealloc]’ stating that “selectionString” is not being observed. This would indicate that a OakDocumentView instance is created that doesn’t go through the designated initializer, how that can happen is beyond me, but with the reshuffled code, if it happens, it should no longer cause a crash in dealloc.
Disallow curl from using signals

If libcurl is built with the default DNS resolver then it will handle a timeout by using SIGALRM, though since we are using threads, and signals are not compatible with threads, this may have led to a crash in Curl_resolv_timeout (for users where a DNS lookup could take longer than the timeout, presumably 300 seconds).
Fix linear destruction of DFA

This is a graph (not a tree) so we have to watch for cycles.
Remove some commented debug output blocks
Let gutter view observe frame changes from OakTextView

Previously it would only observe NSViewBoundsDidChange from the clip view containing the text view, and while it worked most of the time, it failed to see notifications when a text view was smaller than the clip view’s view port and grew, yet still staying smaller than the view port.
Checkin release notes
Limit code duplication
When rescanning a non-existing bundle item path, rescan parent

For example when creating a new bundle (‘foo.tmBundle’) and then saving a new snippet in this bundle (‘bar.tmSnippet’) we may ask to rescan the ‘Snippets’ folder (in the bundle) before the bundle itself does a content (re)scan, which effectively makes the ‘Snippets’ rescan a no-op.

Should fix #1034
Don’t pass NULL_STR to path::entries
DFA nodes themselves should not dispose children

A DFA node may be disposed as part of DFA construction (because the node is redundant) and here it would have “next” pointers setup, which it should not follow in its destructor, since those nodes could still be used.

Fixes #1086
Don’t define global macros that are only used in QuickLook target
Make dictionary map function optional for cache_t::load
Improve speed of loading (parsing) bundle index
Add option to load TextMate’s bundle index (gtm)
Minor speed improvement in creating bundle index