Make mono_threads_pthread_kill available to mach targets.
[profiler] Fix signal based profiling to sample all registered threads.

The current signal profiling code depended on invalid linux behavior of setitimer
allowing multiple threads to register for the same timer. Linux kernel 2.6.12 fixed
this and only the main thread gets the signal. Always.

The correct POSIX behavior happens on OSX/iOS.

On Linux we could use timer_create and SIGEV_THREAD_ID but that would not work on iOS/OSX
since it's specific to it. Given that little detail, I'll leave implementing it as an
exercise to the reader.

The solution, which aims to be as portable as possible, is to use a pair of signals and
have the first one fire the second one against all other threads.

We use a pair of signals since it's not well defined which thread will receive the signal
so detecting this from the signal is non-trivial.
[profiler] Add new profiler API mono_profiler_set_statistical_mode that gives control to statistical mode and sampling rate.
[profiler] Expose new profiling modes and allow sampling rate to be set when using signal-based sampling.