Remove integer boxing and @synchronized based lock

@synchronized is notorious to be the slowest locking mechanism on
iOS/OS X. For small critical section OSSpinlock are a good solution (
http://cocoasamurai.blogspot.fr/2008/04/osspinlock-lock-showdown-posix-l
ocks-vs.html )

Also implement the fifo as a CFArray, that way we can avoid integer
boxing with NSNumber.

Kinda useless but just felt like doing this anyway.