Prevent Tomcat container from detecting Java main applications

Implement the more general improvement of diagnosing JRE and container
cardinality issues on compile and release

Detect checks that there is precisely one JRE and one container that
are offering to run the application and fails otherwise. Compile and
release were only checking that there was at most one container.

Check on compile and release that there is precisely one JRE and one
container that are offering to run the application and fail otherwise.

Diagnostics should use container & JRE names. Previously the detect
diagnostics included the container or JRE detect tags rather than the
container or JREs themselves. This gave rise to diagnostics such as:

Application can be run by more than one container: java-main,
tomcat-7.0.42, tomcat-buildpack-support-1.1.1

which was misleading since tomcat-buildpack-support-1.1.1 is not a
container.

Change the diagnostics to use container and JRE names. For example,
the above diagnostic then becomes:

Application can be run by more than one container: ["Java Main",
"Tomcat"]

Given this general improvement, factor out Java main class location
utility and use this utility from the Tomcat and Main containers.

[#57611752]
Merge 57611752-tomcat-avoid-main-class to master

[Completes #57611752]