FilteringPathname bug fixes and improvements

Document filter consistency requirement.

Implement glob method.

Make + always return a filtered pathname.

Ensure that to_s always returns the input pathname as a string.

Improve handling of relative pathname results.

Ensure only absolute pathnames are passed to the filter.

Clean pathnames before filtering.

[#61738342]
Merge 61738342-FilteringPathname-improvements to master

[Completes #61738342]
Fix FilteringPathname comparisons and sorting
Handle FilteringPathname.open arguments correctly
Application and Droplet abstractions

This major change codifies the use of the Application and Droplet
abstractions.  These abstractions ensure visibility constraints and
standard treatment of paths across all components.  The changes here
are compatibility breaking and will be documented in the commit that
follows.
Merge 61738342-abstractions to master

[#61738342]
Bug and CodeClimate fixes

Some bugs have cropped up when running on Travis.  These changes fix
some of those bugs and eliminate some duplication highlighted by
CodeClimate.

[#61738342]
Merge 61738342-abstractions to master

[#61738342]
Fixes to TAR tests

Previously, the TAR fixture used to test download_tar was not gzipped.
The tar command on OS X handles an extra z in the command without a
problem.  The one on ubuntu does not.  This change ensures that the
fixture is gzipped as well.
Merge 61738342-abstractions to master

[#61738342]
JARs added to additional libraries in compile

Previously, some of the frameworks only added their JARs to the
additional_jars collection as part of release.  Since some components
symbolically link the additional JARs (as part of compile), these JARs
were not showing up on the classpath.  This change ensures that the
JARs are added  as part of compile.

[#61738342]
Merge 61738342-abstractions to master

[#61738342]
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]
Print buildpack repo info 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]