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
These are ok - but we should
i) encode the tests in a declarative form, and
ii) have more of them - with more different examples of patterns of delay relative to duration.
Also we should have "tests of function" rather than just relying on the queue's own record of events - that is, you should supply a wrappedDataSource that is used to generate the record of events - this implies making it a "proper component" rather than "just a bunch of invokers" (which is a slightly dubious way of fabricating a component out of nothing).
As discussed in the channel, the "get" tests should verify "point of delivery of request" by returning values from a model which is considered "continuously incrementing" (and these returned values which are tested) and similarly the "set" tests can construct a record out of their "model" payloads. I think the events "enqueued" and "dropped" can be eliminated from the implementation since they are unlikely to be useful to the user of this component, and we can write the tests without them.