Refactor the way data is received for efficiency and correctness
Refactor the way data is received for efficiency and correctness

The new implementation has a permanent 'data' event listener that
routes received data to queued 'response' objects. These objects
hold onto the callback functions that need to be called when data
is fully received.

vistadataproject/metaPureJS,vistadataproject/metaPureJS,vistadataproject/metaPureJS