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
You can see that in that source also, "debounce" accepts a time threshold for coalescing multiple calls together - our version here doesn't. We don't make any explicit provision to merge requests together, but given this is a dataSource wrapper rather than just a general "processor of signals" (as those other source impls are) this is the expected usage pattern of the wrapper. Simply by virtue of being a wrapper of the dataSource API, rather than a wrapper for a general sequence of function calls, there will be a natural semantic induced of "coalescing or amalgamating" the requests - so our naming could usefully reflect that.