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]