Reverses commits
Make writes happen asynchronously. This allows for data to be read while reading.
However, this impacts the callback... currently it calls back before the data has been passed to hardware. We could pass the write baton down through to the refcon param in writeAsync:length:refcon and call back once all data has been written instead. More discussion needed.
Adds locks around the reads and writes so reads are allowed while writing and the
callback to the javascript layer is only called when all the data has been writen.