Remove profiles and use Namespaces

- Providers can belong to a given namespace
- Provider names are only assumed to be unique within their namespace
- Profiles have been removed
- Tests have been added

In general the namespace for the search of a provider is added as a last
argument, while it is declared and returned in a `{Namespace,
ProviderName}` form within the library.

The default namespace is 'default' when searching or expanding values.

Still requires some integration testing and is backwards incompatible as
far as support for profiles has been removed.