fix channel binding not cloning providers properly

  channel binding did not work as expected, indeed internal status variables
  such as _started were written in the channel wrapper rather than the source
  provider (this is a basic consequence of how inheritance is implemented in
  JS: inherited fields are COW).

  we work around the issue by storing *global* internal status variables in a
  _g object. Since internal global variables are now accessed by derefering in
  intermediate object, this won't cause internal status variables to be copied
  on write
with channel binding fixed introduce provider pools
update sample config with pooled example