PT36957469 Support for writing additional providers.
Widened visibility of some methods and constructors so that providers in
other packages can use them.
Added provider that can read the configuration from a file.