feat: structural provider provenance via meta.provider (#399)
**Summary**
- Adds meta.provider typed option tracking each aspect's structural
origin as a path (e.g., ["foo" "bar"] for foo.provides.bar)
- providerPrefix threads through the provides submodule so child
providers accumulate their parent's path
- mkAspectsType factory allows namespaces and den.provides to set their
own provider root
### How it works
The provides submodule extends providerPrefix with the current aspect's
name before passing it to child provider types. Namespaces set
providerPrefix = [ name ] as their root. den.provides uses [ "den"
"provides" ]. Top-level aspects default to [].
This lets adapters distinguish "bar provided by foo" from a top-level
"bar" by inspecting aspect.meta.provider.
authored by