Only expose application through Tomcat

Previously, the Tomcat container symlinked the application root
directly to TOMCAT_HOME/webapps/ROOT.  This led to a problem where a
web application configured without a root servlet would expose the
filesystem of the application via the default servlet.  This change
fixes that issue by ensuring that only files and directories that are
uploaded by the user are mapped into the ROOT web application.

To make this change, the first implementation of an Application
abstraction has been created.  This initial implementation ensures
that only the originally upload application code is exposed and adds
utility methods for getting a component-specific directory and
determining paths relative to the application root.

[#59134502]
Merge 59134502-only-expose-application-through-tomcat to master

[Completes #59134502]