Copy to staging location

This is the first step in an effort to create a way to build offline-
only buildpacks.  This first step creates the Rake tasks required to
copy important files from their source locations to a staging area.

[#67851786]
Create offline TAR file

This is the second step of the effort to create offline buildpacks.
This change creates a TAR file from the staged files.

[#67852576]
Download latest dependencies

This is the third step in an effort to create a way to build offline-
only buildpacks.  This change uses the buildpack's DownloadCache and
VersionResolver to populate a cache in the staging area.  This cache
contains the latest version (as identified by the configuration) of
all of the dependencies that might be used by the buildpack at
runtime.

As this logic was so complex, this and the other offline build tasks
were broken out into their own Task classes.

[#67851722]
Disable remote downloads

This is the fourth step in creating an offline buildpack.  In this
change, the config/cache.yml file is modified to explicitly disable
remote downloads.

[#67851760]
Remove GlobalCache

This is the fifth step in creating offline buildpacks.  This change
removes the GlobalCache as it will now, never be used.

[#67852314]
Look to buildpack local cache

This is the sixth step in creating an offline buildpack.  This change
causes the ApplicationCache to look at a local location
(resources/cache) for resources when it cannot download them.

This simple requirement led to extensive changes to the DownloadCache
implementation.  The changes mostly had to do with removing code that
causes filesystem locking for cached resources.  Since the cache can
no longer be shared between processes (there is no global cache) there
was no need for the added complexity of the filesystem locking.  In
addition, the behavior around detecting when the network was
unavailable was overly complex.  This change eliminates all excess
calls to determine connectivity, instead using the needed calls to
determine it.

[#67852466]
CodeClimate fix

This change removes duplicated behaviors to satisfy CodeClimate.
Indicate that a file was retrieved from the cache

Previously, when a file was retrieved from the cache, it displayed a
very short download time (most likely 0.0s).  While this was true and
properly hid the fact that caching was happening, some users were
freaked out by the lack of knowledge about the cache.

This change indicates (using a 'found in cache' message) that a cached
file has been used.  If the file is downloaded it continues to display
the download time as it always has.

[#67662796]
Package task

This change adds a `package` rake task to the buildpack.  This task
creates a .tar.gz of the buildpack, suitable to use with `cf create-
buildpack` and `cf update-buildpack`.  The task is configurable
allowing the user to change the version string embedded in the name of
the output file.  It can also be configured to create an offline
buildpack which embeds the latest version of its dependencies and
disables remote downloads.

[#67852640]
Merge branch 'offline'
Polishing

This change polishes up some string interpolation logic and excludes
the vendor directory (where Travis installs it's gems) from rubocop.
Embedded Version

Previously, it was quite difficult to determine what version of the
buildpack was being used.  In the case that buildpack was cloned, it
would report the remote and hash of the clone, but when the buildpack
was used from the system (i.e. the submodule in dea_ng), there was no
information.

With the push towards a packaged buildpack, the possibilities for
versioning were opened up.  The package now creates a
config/version.yml file which contains the original git hash, git
remote, whether it was created as an offline buildpack, and the
version the user specified on creation.  If this file exists, the
buildpack returns this information in the form:

```
2.1.2 (offline) | https://github.com/cloudfoundry/java-buildpack.git#12345
```

The buildpack does retain the ability to report some version
information when it is not packaged.  In the case that a clone is
used, the version information is reported in the form:

```
https://github.com/cloudfoundry/java-buildpack.git#12345
```

Finally, if somehow the buildpack is run not packaged and not cloned,
the version information is reported as:

```
unknown
```

In short order, the buildpack will be removed from dea_ng and will
only be added as a package.  In this case, the display of the unknown
form will be replaced by the packaged form.  It's likely that users
living on the bleeding edge will continue to see the clone form.

[#68410854]
Merge 68410854-embedded-version to master

[Completes #68410854]
Version updates

This change updates the version of Rake to the latest.
Do not sort JAVA_OPTS

Previously, the gremlins in my head drove me to sort the JAVA_OPTS
before they were used during the startup of an application.  As
indicated in #41, not only wasn't this needed, it actually prevented
certain use-cases.  This change removes the sorting of the JAVA_OPTS
and updates the associated tests (the much larger bit of work).

[#67684882][resolves #41]
Merge 67684882-no-sort-java-opts to master

[Completes #67684882]
AppDynamics custom resources

Previously, if a user wanted to override the app-agent-config.xml file
in their application, it was impossible to do so.  This change adds
the copy_resources() functionality to the AppDynamics framework.  This
functionality now allows a user to add files to
resources/app_dynamics_agent and have those files overlayed on the
framework's sandbox.

[#67769548]
Merge 67769548-app-dynamics-resources to master

[Completes #67769548]
Improve cf push examples

Previously, the examples in this repository for pushing applications
read as `cf push -b https://github.com/cloudfoundry/java-
buildpack.git`.  While this would work in cases where there was a
manifest for the application, it lead to confusion among users.

This change makes the examples more verbose, but much more clear and,
we hope, reduce the amount of confusion.

see: https://groups.google.com/a/cloudfoundry.org/d/topic/vcap-dev/ROJfb0SJ5PA/discussion

[#68430712]
Merge 68430712-cf-push to master

[Completes #68430712]