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]
Merge 71925232-windows-packaging-improvements to master

[Completes #71925232]
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]
Merge 71928434-mkdir-immutable-cache to master

[Completes #71928434]
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]
Merge 70850900-insight-always-available to master

[Completes #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]
Merge 71298674-metaspace to master

[Completes #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]
Merge 72253796-conditional-basic-auth to master

[Completes #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]
Merge 72265294-auto-reconfig-kill-switch to master

[Completes #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.