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
This is a means of constructing an Infusion component that will cause problems with the framework - the semantic for such "false components" will change, in that the current IoC system considers that they are genuine (that is, attached to the component tree) and the future system will ignore them. In general, invokeGlobalFunction should only be used to create top-level components (that is, the root of a component tree). I suggest we move to the model I suggested in IRC yesterday, where the structure called "the queue" just consists of data, and all methods, invokers, events, etc. are moved onto the parent component, accepting "the queue" as extra arguments - this will be clearer as well as more efficient - and allow us to use standard IoC methods for expressing the variation in strategy.