Changed the way we handle multithreading. The previous way was wrong.
Now, we ask the user to define when he wants multithreading support

Added a semaphore to allow the new thread to signal when it's ready. This prevents
mutex to be released too early and thus, prevents race conditions.

Cut the advice around pthread_create in two (before/after), because the around advice
appears to generate something wrong that G++ is unable to build.