Abstraction for double-buffer

Double-buffer operation is now abstracted *with a different approach*.
Added Suspender(It deserves a better name) to abstract your mutex.
You might want to change the order of those functions and typedefs. It's a little bit messy I think. I suggest you write declarations or separate them into different files. I'm not doing that now for I don't know what you really want and the microphone is waiting.