CentOS support

This change updates the RepositoryIndex functionality to substitute
the 'centos#' as a value for platform.  It also brings the platform
resolution strategy inline with the way the java-buildpack-dependecy-
builder does it to ensure that the values will match.

[#58119316]
Merge 58119316-centos-support to master

[#58119316]
Centos6 support documentation

This change adds the missed update to the documentation that points to
the centos6 repository.

[#58119316]
Merge 58119316-centos-support to master

[#58119316]
Only expose application through Tomcat

Previously, the Tomcat container symlinked the application root
directly to TOMCAT_HOME/webapps/ROOT.  This led to a problem where a
web application configured without a root servlet would expose the
filesystem of the application via the default servlet.  This change
fixes that issue by ensuring that only files and directories that are
uploaded by the user are mapped into the ROOT web application.

To make this change, the first implementation of an Application
abstraction has been created.  This initial implementation ensures
that only the originally upload application code is exposed and adds
utility methods for getting a component-specific directory and
determining paths relative to the application root.

[#59134502]
Merge 59134502-only-expose-application-through-tomcat to master

[Completes #59134502]
Rubocop fixes

Bad development practices led me to commit code without first running
the entire rake suite.  This fixes the problems introduced in the last
commit.

[#59134502]
Merge 59134502-rubocop to master

[#59134502]
Change detect output

Previously, the detect output of the buildpack looked something like
the following:

openjdk-1.7.0_40, tomcat-7.0.42, spring-auto-reconfiguration-0.9.1

Per request from the Cloud Foundry core team, this output has been
modified to delimit each entry's name and version number with an
equals sign and each entry from one another with a space.  The output
now looks like:

openjdk=1.7.0_40 tomcat=7.0.42 spring-auto-reconfiguration=0.9.1

[#58810508]
Merge 58810508-detect-output to master

[Completes #58810508]
Support Play 2.2

Refactor Play framework to encapsulate the application-specific pieces
in a "PlayApp" abstraction defined by the BasePlayApp class. This
class has two subclasses: PlayAppPost22 for Play 2.2 and upwards and
PlayAppPre22 for Play 2.1.x and earlier (actually no earlier than 2.0
since older versions are not supported).

PlayAppPre22 is further subclassed by PlayAppPre22Dist and
PlayAppPre22Staged to represent the differences between Play 2.0/2.1
dist and staged applications, respectively.

PlayAppFactory isolates the using code (the Play container and some
associated frameworks) from the concrete subclasses of BasePlayApp.

Play version parsing and the naming requirements for the Play JAR are
both tightened up.

Play 2.2 support consists of:

1. Looking for a different style of start script. The start script is
now present in the bin directory and named after the application.

2. Updating the classpath variable in the start script (for both dist
and staged apps, which are now identical in structure in Play 2.2).

3. Supporting Play 2.2 style Java options by pre-pending '-J' to each
Java option.

4. Avoiding incompatible minimum and maximum heap sizes. Play 2.2 sets
-Xms to a large value by default and when this exceeds our calculated
-Xmx the JVM fails to initialise. Since we do not normally specify
-Xms, we set this to a low value (currently 2M since 1M is
insufficient for the JVM to initialise), but note that we do this for
Play 2.2 only.

[#58432326]
Merge 58432326-play-2.2 to master

[Completes #58432326]
Spring auto-reconfiguration detection for long Spring JAR names

[#59398214]
Merge 59398214-spring-framework-detection to master

[Completes #59398214]
Reset internet availability check before each spec

Some specs run with WebMocks and mock no internet connection while
other specs, notably integration tests, run and access the internet.
Depending on the order of running of specs, an incorrect internet
availability is cached in a DownloadCache class variable. Reset the
cache before each spec.

[#59391214]
Merge 59391214-reset-internet-check to master

[Completes #59391214]
Zero-touch support for Spring Insight

Spring Insight is a monitoring solution provided Pivotal[1].  It monitors
Spring web applications for performance and faults.  This support is
implemented as a framework that looks for a service called 'insight' and acts
when it is found.  The framework downloads the appropriate Insight agent from
the Insight dashboard and configures it so that it connects to the bound
service properly.  Configuration of Insight is not accomplished through the
buildpack, but rather through the Insight dashboard.  This service only works
for applications deploying into the Tomcat container and modifies the Tomcat
container with *TEMPORARY* support for behaviors needed by the Spring Insight
agent.  These changes to the Tomcat container are not likely to last long and
other components should not depend on or emulate them.

[1]: http://gopivotal.com/pivotal-products/apps/pivotal-tc-server

[52064679] [52065001] [52065073]
[#58830044]Broaden service detection criteria

Check for variables values in user-provided services as per the
documentation provided separately by Ben Hale for the newrelic
service.

[#58830044]
Merge 58830044-user-provide-newrelic-service to master

[Completes #58830044]
Merge remote-tracking branch 'chris/master' into 59475440-spring-insight-pull-request

[#59475440]