introduce multi source provider

  AKA: heterogeneous pool

  this is a proof of concept, lots of debug logs are floating around.
  notice how nicely configuration is now handled for providers.

  known issues:
  right now, only "play" works properly, "stop" has an incorrect behaviour :
  stop() needs to be propagated from the lowest-level provider, to pooling
  wrappers. We will probably need to emit() an event of some sort.