Make extension more palatable

This change takes the opportunity to factor out a couple of subclasses
that should make extension more palatable.  At the same time, it
cleans up many of the existing components so that they are more
similar to one another.  Finally it improves the extension
documentation to talk about the new base classes, the unified
component contract, and documents the content of the context passed in
during initialization.

[#57494488]
Merge 57494488-subclassing to master

[Completes #57494488]
Component name while downloading

This change normalizes the name of the Tomcat while downloading.

[#57494488]
Merge 57494488-subclassing to master

[#57494488]
Update build notification

This change updates the build notification location.
Update OpenJDK documentation

This change update the OpenJDK documentation to reflect that there are
now three platorms and therefore are three listings to inspect for
versions.

[#57290246]
Merge 57290246-docs to master

[Completes #57290246]
Groovy files in directories

Previously, both the Groovy and Spring Boot CLI containers would only
work with Groovy files located in the application's root directory.
This change makes it so that all groovy files, regardless of their
directory will be found and used.

[#54517818]
Merge 54517818-deep-groovy to master

[Completes #54517818]
Polishing

The previous commit added some unwanted output to the test run.  This
removes it.

[#54517818]
Merge 54517818-polishing to master

[Completes #54517818]
fsync file writes

This change ensures that all file writes are fsync'd.  This is in an
attempt to address some issues we're seeing with corrupted files
shortly after they are written.

[#58149152]
Merge 58149152-fsync to master

[Completes #58149152]
Fail if system calls are non-zero

Previously, if a system call such as 'tar xf ...' failed, the
buildpack continued on as if everything had gone fine.  This was due
to the use of the 'system' call without ever checking that the return
value was 'true'.  This change creates a 'shell' call that works
similarly to the system call except that it checks the exit code of
every call and prints stdout and stderr and then fails if the exit
code is non-zero.

[#58149490]
Merge 58149490-fail-non-zero to master

[Completes #58149490]
Merge branch 'master' of github.com:cloudfoundry/java-buildpack

Conflicts:
	lib/java_buildpack/container/groovy.rb
	lib/java_buildpack/container/main.rb
	lib/java_buildpack/container/play.rb
	lib/java_buildpack/container/spring_boot_cli.rb
	lib/java_buildpack/container/tomcat.rb