Merge 61738342-abstractions to master

[Completes #61738342]
Upgrade Ruby

This change upgrades the required version of Ruby to 1.9.3-p484 due to
a security vulnerability in 1.9.3-p448.

[#61839004]
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]
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 branch '1.5.x'
Improvements to *JavaHome types

Previously the ImmutableJavaHome.do_with() method used the $PWD
qualified version of JAVA_HOME.  This caused problem during some
executions, so both of the *JavaHome types have been changed such that
the fully qualified path is used in the do_with() method.

[#63086152]
Merge 63086152-java-home-improvements

[Completes #63086152]
Logger support for non-block message

Previously, only messages passed to the logger via a block would be
printed.  Due to the wonky logger API, messages and prognames are
interchangeable and this was not taken into account in the
implementation.  Since the progname is fixed at logger creation time,
we were discarding any other value that might be provided (which at
times could be the actual message).  The new implementation uses the
input message or input progname, whichever is not nil, as the message.

[#63104902]
Merge 63104902-non-block-logging to master

[Completes #63104902]
Remove focus

Remove an left-over test focus.
Polish IDEA ignores

This change polishes up the ignores of IDEA artifacts

[#63442858]
Merge 63442858-remove-libraries to master

[Completes #63442858]