Credentials in DownloadCache URIs

Previously the DownloadCache would not pass user credentials embedded
in URI through the request.  This meant that repositories with basic
auth credentials were not supported.

This change ensures that those credentials are now passed through
enabling authenticated repositories.

[#70503862]
Groovy 2.3.+

This change updates the version of Groovy used from 2.2.+ to 2.3.+.

[#70736516]
Update web.xml modification for auto-reconfiguration 1.0.0

This change updates the web.xml modification behavior to support auto-
reconfiguration 1.0.0.  The modification no longer makes any change to
the application context configuration XML files or Java classes.  It
now only adds three ApplicationContextInitializers to the
configuration.  In cases where there is no web.xml file, auto-
reconfiguration 1.0.0 will use a web fragment to configure itself.

[#49695439]
Upgrade auto-reconfiguration version

Previously, the auto-reconfiguration JARs for Spring, Play, and Play
JPA were pinned to an old version of auto-reconfiguration.  This
change updates those patterns to use the latest in the 1.x line.

[#71298968]
Version updates

This change updates the versions of Ruby and the dependencies.  This
time round both rubocop and rspec required extensive changes for
compatibility.
Improve Windows packaging experience

Previously, when the DownloadCache was used on a Windows machine, it
could not read and write files properly.  This was due to it using the
default system encoding which differed from the expected UTF-8.  This
change updates the DownloadCache to always read and write files as
binary in order to get around the encoding issue.

Previously, when files were cached by the DownloadCache, the file
names were escaped to ensure that there were no forward slashes in
them.  On Windows, this escaping is not sufficient, as colons must be
escaped as well.  This change updates the escaping to cover this
additional case.

[#71925232][resolves #53]
Immutable CachedFiles

Previously, the CachedFile always behaved as if it was mutable, even
in situations where it was working against an immutable cache.  This
resulted in situations where a combination of intermittent network
connections and read-only file systems would cause an attempted
direction creation that would fail.  This change enhances the
CacheFile such that it can behave in both a mutable and immutable
fashion.

[#71928434][#54]
Spring Insight service always available

The Spring Insight framework is different than all of the other
services because it downloads its dependency from the service itself,
rather than from a central location.  It does however honor the
Internet availability flag even though it doesn't go to the Internet.
This caused issues when an offline buildpack was used because it
prevented the proper dependency from being downloaded.

This change adds the ability to _temporarily_ override the value of
Internet availability so that the Spring Insight framework can always
download its dependencies, regardless of the current state of internet
connectivity.

[#70850900]
Add commented-out metaspace entries

This change adds commented-out metaspace entries to the JRE
configurations.  This is being done to help point users upgrading to
Java 1.8 to the documentation about the changes between 1.7 and 1.8.

[#71298674]
Conditional Basic Auth

Previously, basic auth headers were added to every DownloadCache
request.  In the case where there were no basic auth credentials,
empty strings were used for the username and password.  This was
wrong, although tolerated by the primarily used CloudFront.  This
change ensures that basic auth headers are only added when there are
both a username and password specified.

[#72253796]
Disable Auto-reconfiguration via configuration

Previously, auto-reconfiguration was always enabled.  The auto-
reconfiguration log might sometimes choose not to reconfigure, but if
there was a bug or some other situation that would prevent an
application from running, there was no way to explicitly disable auto-
reconfiguration from even being downloaded and run.

This change adds that configuration option to all three kinds of auto-
reconfiguration and documents how to disable them.

[#72265294]
Version updates

This change updates the dependency versions
Move debug

This change moves debug gems into a different group.
Package with Ruby 2.1

Previously, the Gemfile of the project assumed that all work was being
done against Ruby 1.9.x.  The CI tests ran successfully on the 2.1
line because they excluded the version-specific debug gems with a
--without debug.  The instructions (and indeed good user experience)
did not ask users to do this, so when bundle install was run in a
non-1.9 Ruby runtime, the gems would not install.

This change updates the Gemfile to install version-specific debug gems
allowing development against 1.9.x, 2.0.x, and 2.1.x.
Spring Boot 1.1.0

Previously, auto-reconfiguration did not work on Spring Boot
applications.  With the upcoming releases of Spring Boot 1.1.0.RELEASE
and Java Buildpack Auto-reconfiguration 1.0.0.RELEASE, this will no
longer be the case.  This change updates the buildpack to work with
Spring Boot 1.1.0.RELEASE and later.

[#49695439]
Version updates

This change updates the versions of all dependencies.
New Relic Agent Upgrade

This change upgrades the buildpack to use the 3.7.x line of the New
Relic agent.
Empty classpath improvements

Previously, when there were no additional libraries, the classpath
would render as '-cp '.  This was a problem when that argument was
followed by something else.  Applications would end up with something
like '-cp  app.groovy' which was incorrect.  This change updates the
as_classpath() method to return nil if there is are no additional
libraries ensuring that the '-cp' argument is never added to the
command.
Document tier_name and list all config in alphabetical order

The tier_name the application should apear under in the AppDynamics dashboard
was not documented. This commit fixes that and also ensures all config options
are listed in alphabetical order in the AppDynamics documentation as well as
other documentation.

[#72500698]
Truncate detect strings to 255 characters

An issue raised on GitHub [1] shows that detect strings over 255 characters
cause a non-obvious error to occur during staging of an application. The
commit causes detect strings over 255 characters to be truncated to 252
characters and have an ellipsis appended (...).

[1] https://github.com/cloudfoundry/java-buildpack/issues/58

[#73628824]