Handle buildpack not in a git repository

When the buildpack is not in a git repository, issue an appropriate
debug log message and prevent 'fatal' standard error messages from
appearing.

Improve test coverage of Buildpack class.

[#55742000]
Merge 55742000- to master

[Completes #55742000]
Support no external connection

Previously, the download cache (and everything build on top of it)
depended on a working connection to any repository used by it.  This
caused issues as one of the supported use-cases is that the buildpack
needs to run without having access to the internet.  This change does
not modify the fundamental behavior of the cache (it still makes a
call looking for 304s).  The change does make the cache behave better
in the face of not being able to connect to a repository.  It does
this by re-using the cached object if an update cannot be completed
successfully, and failing with a more descriptive error message in the
case that a first-time download cannot be completed successfully.

[#54290822]
Merge 54290822-no-external-connection to master

[Completes #54290822]
Set java.io.tmpdir to $TMPDIR

This is based on an assumption that $TMPDIR is part of the contract
for the droplet execution environment, which is currently
undocumented.

[#52783209]
Merge 52783209-set-java.io.tmpdir-to-TMPDIR-environment-variable to master

[Completes #52783209]
Support read-only buildpack cache

If a repository file cannot be downloaded, look for the file in
the read-only buildpack cache and use that file if it exists.

This code is localised in a look_aside method for ease of stripping
out once a read-write buildpack cache is implemented.

[#54290822]
Merge 54290822-no-external-connection to master

[#54290822]
Test use of stashed index.yml

[#54290822]
Merge 54290822-no-external-connection to master

[#54290822]
Improve diagnostics for read-only buildpack cache

[#54290822]
Test environments

This change adds support for test environments.  The targeted test
environments are lucid64, precise64, and mountainlion64.  The support
comes in the form of the ability to resolve the platform and
architecture of the current host when resolving a repository URI.  The
resolution allows the repository to contain wildcards of '{platform}'
and '{architecture}' which are then substituted with the appropriate
value.

The other half of this support is the modification of the existing
repositories.  Since our Java dependencies do not currently depend on
the host that they are running on, their repository URIs have been
changed to remove the platform and architecture directories.  The
OpenJDK dependency is platform and architecture specific and as such,
it's URI has been modified to include the placeholders.

The final step is the update of all of the documentation to accurately
reflect the new repository structures.

[#52860123]
Merge 52860123-test-environments to master

[Completes #52860123]
Code Climate test coverage

This change slightly modifies the spec_helper to better work with Code
Climate's test coverage.
Merge branch 'code-climate-test'
Add RubyMine debugger gems in their own group

[#56352162]
Support Play 2.0

Play 2.0 dist applications have classpaths similar to Play 2.1.3
stages applications, so use symbolic linking. This minimises the
editing required to the start script.

[#56352162]
Merge 56352162-play-2.0 to master

[Completes #56352162]
Revert "Add RubyMine debugger gems in their own group"

This reverts commit 6d88f9a11e371d8696f5f7430a172b32271a7c4f.
Downgrade logging levels of "no internet" logs

[#54290822]