Decide on access level for ComponentRepository and AbstractComponent
It turns out that ComponentRepository and AbstractComponent cannot be package-private and still be used with Janino because Janino uses a separate class-loader and thus does not have permission to access those classes when it tries to install the newly defined component type.
I must make them public, but then this influences my previous decisions, namely:
- Should component proxies go in their type's package?
- Should ComponentRepository, etc. be moved into an impl package to keep the core clean?
- Should other package-private classes be made public for consistency now?