made Callback a function object not a function pointer
made decoder do it's filling of the buffer in a separate thread.  Updated buffer to be thread safe.  Added buffer size to Decoder constructor