Fix -jobs=<N> where <N> > 1 and the number of workers is > 1 on macOS.
The original ExecuteCommand() called system() from the C library.
The C library implementation of this on macOS contains a mutex which
serializes calls to system(). This prevented the -jobs= flag
from running copies of the fuzzing binary in parallel which is
the opposite of what is intended.
To fix this on macOS an alternative implementation of ExecuteCommand()
is provided that can be used concurrently. This is provided in
FuzzerUtilDarwin.cpp which is guarded to only compile code on Apple
platforms. The existing implementation has been moved to a new file
FuzzerUtilLinux.cpp which is guarded to only compile code on Linux.
This commit includes a simple test to check that LibFuzzer is being
executed in parallel when requested.