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
From this line (500) to 516, the behaviour is generic - as is the behaviour after 519. That is, the implementation is broadly what could be expected to be generic amongst all queue variants. Although we are only providing one queue variant in this current implementation, we should make sure that the component easily allows extension. It seems like the only line which represents a concrete implementation choice is line 518 - so this line should be factored out into a dedicated function (probably an invoker) attached to the component which is easily configurable and suitably named.