Implementing multi-threading for Mixer3D

Need to debug a compiler error "No matching function for pthread_create" due to a faulty argument. See also http://stackoverflow.com/questions/18057130/reference-to-non-static-member-function-must-be-called.
Made addAudioObjToMix() a static function

This required including copying over the this pointer to the mixerThreadArgs struct, as static functions only have access to static class members. With the this pointer passed explicitly, non-static members can be accessed. Though no errors are thrown, there is no playback. Likely due to a race-condition on the output buffers, which need to be locked with MUX.
Added pthread_barrier_t but with errors

XCode thinks pthread_barrier_t is an unkown type. Also consult here for barrier and mux info:

http://pages.cs.wisc.edu/~travitch/pthreads_primer.html
http://stackoverflow.com/questions/5947061/mutex-as-class-member
commented out pthread_barrier code

pthread_barrier_t isn't supported in iOS
added custom barrier implementation

http://ptgmedia.pearsoncmg.com/images/0201633922/sourcecode/barrier.c
http://ptgmedia.pearsoncmg.com/images/0201633922/sourcecode/barrier.h
http://ptgmedia.pearsoncmg.com/images/0201633922/sourcecode/errors.h
Merged iOSSonic wrapper changes into multithreaded Mixer
readded custom barrier class, linker errors

specifically the function calls to barrier_init, barrier_wait
and barrier_destory are not being linked properly
moved updateAngles outside of for loop

was previously updating angles on each iteration across the audioObjects,
though a single call to updateAngles updates angles for all audio objects
fixed linker errors related to barrier functions

implemented the proposed fix in this SO thread: http://stackoverflow.com/a/7376015/1402368
TODO: get barrier class licensing info
Resolved thread syncing errors

barrier_wait actually returns a value of -1 if all threads
have sync-ed successfully. Previously performMix() was handling all
non-zero return values as errors.
made fInput, fFilter local to Mixer::convolution()

also renamed fInput, fFilter to inputFFT, filterFFT respectively.
made Mixer::left(right)Filter local to Mixer::loadHRTF
made Mixer3D::filterLength local to Mixer3D::addObjToMix
added missing semicolon from removing filterLength class var
made Mixer3D::inputAO local to Mixer3D::addAudioObjToMix

also renamed inputAO to audioObjInput
fixed typo in comment
made overlapInput a 2D array

previously it was only a 1D array, meaning when the Mixer was
single-threaded the 'overlapInput' from the previous iteration, for
ALL audio objects, would actually just be the overlapInput from the
previous iteration for the LAST audio object, since at each iteration
across the audio objects, the overlapInput array would get re-written.
remove whitespace
changed print statement in callback to onCallback

was previously "performMix time consumption"