Update settings tests to new system
Use path::is_absolute instead of custom code
Use path::is_child instead of custom code
Add scm::info_t::pop_callback

Ideally we would be able to remove arbitrary callbacks rather than the last one added, but for this we would need to introduce some sort of handle (the callback itself is a block so not suitable as handle). The push/pop API for callbacks is sufficient for our use-case though.
Disallow copying test::jail_t

Since we delete the jailed directory in the destructor we can’t support a deep copy of this type. Since we don’t need it, and it’s just a type used in tests, I opted for simply disabling this (to get a compiler error, should it be attempted) rather than introduce the necessary code to allow shallow copies.
Use const for member data initialized by constructor
Disallow copying scm::info_t

Presently not supported.
Use weak pointers in most async dispatch blocks

This is mainly to expedite potential destruction of the objects referenced.
Changing default bundle item settings could fail

The cache would not include changes to settings keys from delta bundles.
Use proper PCH for tests

We previously passed an array to ‘pch_for’ where we should have passed a source path, though it appear to have worked.
Only set -fobjc-link-runtime for app targets

Ideally this should be set for executable targets that use Objective-C (and have deployment target set to 10.7).

This change is a quick fix for not having pure C++ tests leak. For more info see https://github.com/sorbits/rdar/blob/master/LeakWith10_7ObjCRunTime/README.md
Use libdispatch for monitoring file changes

This is instead of using kqueue, which has more overhead and require a dedicated thread for the kevent run-loop.