rework: channel variables vs provider variables

  Previously this._g was used to provider global provider variables affecting
  all instances of a given provider regardless of channel selection.
  In particular this was used to store the "_started" state

  Rework the semantics of _started and distinguish between current channel
  state (_started) and provider availibility (available()). see included
  comments for more details.
  In addition to this rework the global fields lookup mecanism. The problem was
  that some providers are never wrapped by a channel (MultiSrc) or are
  "fake"-wrapped (Pool) leading to state corruption. All providers will now go
  through the _up() wrapper to lookup provider-global variables. Providers
  implementing exotic behaviour where _g doesn't have any meaning can now
  override this lookup mecanism and remap _g to a direct access when
  appropriate.

  Hopefully this fixes a wide range of bugs and instabilities in load balancing
  providers.