Documentation of new abstractions

This change adds documentation for the new Application and Droplet
abstractions.

[#61738342]
Merge 61738342-abstractions to master

[Completes #61738342]
Ensure that private class methods are private

Previously, a number of class methods were incorrectly scoped by using
the instance `private` method.  As pointed out in the issue, this
doesn't actually hide them.  This change uses the class-reopen style
to actually scope them.

[#59657214]
Merge 59657214-private-class-methods to master

[Completes #59657214]
Merge remote-tracking branch 'upstream/master'
Print buildpack repo info to standard output (under compile script)

This can only be printed under the compile script as the detect and
release scripts deliver payloads to standard output.

If there is a git repository, prints the following:

    Java Buildpack source: <remote url>#<head commit sha>

If there is no git repository, prints the following:

    Java Buildpack source: system

[#62829398]
Merge 62829398-display-git-commit to master

[Completes #62829398]
CodeClimate Improvements

This change simplifies some code and reduces duplication to satisfy
CodeClimate.
Rollback shell script change

This commit rolls back a change to a shell command that is run when
determining if a buildpack is in a Git repository.
Fix broken link

This change fixes a broken link in the extending documentation.
Make sandbox directory on demand

Previously, the component sandbox directory was created aggressively
each time a Droplet was instantiated.  This caused issues because it
would happen during the detect phase and corrupt the file system for
the compile phase.  This change removes the aggressive creation and
instead makes the directory the first time that the sandbox is
requested by a component.

[#62947962]
Tidy requires

When testing the previous change it was noticed that the require
statements in a number of components were in incorrect.  This change
tidies them up a bit.

[#62947962]
Merge 62947962-lazy-sandbox-creation to master

[Completes #62947962]
Merge remote-tracking branch 'upstream/master'
Merge branch 'master' of github.com:rmorgan/java-buildpack