Resolves page names and component types to fully qualified class names. Pages and components may be provided by the application or inside a
mapped package. Page names often appear inside URLs, and component types often appear in component template (when specifying the type of an embedded component).
The service is configured using a collection of {@link LibraryMapping}s. Each mapping maps a prefix, such as "core" to a root package name, such as "org.apache.tapestry5.corelib". The root package is expected to have sub-packages: "pages", "components", "mixins" and "base" ("base" is for base classes).
The resolver performs a search of the classpath (via {@link ClassNameLocator}), to build up a set of case-insensitive maps from logical page name, component type, or mixin type to fully qualified class name.
Certain ambiguities occur if mapped packages overlap, either in terms of the the prefixes or the package names. Keep things clearly separate to avoid lookup problems.