Deprecate ChannelProvider::configure(), which doesn't do much and
is incompatible with the idea of shared context.
A lot of down-stream mess related to the confused relationship
between InternalClientContextImpl and InternalClientContextImpl::ChannelProviderImpl.
This is changed to compose the provider within the context
and use a nested shared_ptr so that references to the provider
are really references to the context.
This brings the ownership semantic in line with what the API
suggests, and what other providers implement.