The reflection utility should also define a scope or context which is consulted by the registries and proxy creators to control caching.
Currently, our caching applies to everything, and we cache per-type.
This might not be desired in some situations, and a more fine-grained control over how scopes are defined can be useful.
Ideally a scope or context should be hierarchical and allow for a parent-child relationship, so that we can have an application-level context, for instance, which is inherited and used by the request-level context.