String trim fix

Don't try to trim if there's nothing found to keep. This would lead
to an out-of-bounds exception.
DiskArbitration Idle

The new idle handler can do things when DiskArbitration has not
given any new disks in a user-defined time span. This uses a timer
dispatch source, so some of the dispatch related code was moved into
its own files.
Idle Marker File

Create a file to allow scripts and other API limited entities to
detect if InvariantDisk has been idle. The file is deleted when
ever disk changes happen, and created after the idle timeout has passed.