Remove profiles and use Namespaces

- Providers can belong to a given namespace
- Provider names are only assumed to be unique within their namespace
- Implicit 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.