FLUID-5542: Queued DataSource

Added a Queued DataSource that can combined with different requestQueues to synchronize, throttle, and debounce requests to a DataSource.

http://issues.fluidproject.org/browse/FLUID-5542

This is an extension of the work started in https://github.com/fluid-project/metadata/pull/43
@amb26 i think i understand why you want to reanimate it to something other than debounce and add in some merging. What I don't understand is how to do this. Do you have a suggestions? Keep in mind that the writeQueue handles both set and delete calls which have different signatures. Also how would we keep the directModel straight if they are being merged. I have a feeling that I'm missing something here that would make this all work.