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]
Merge 54290822-downgrade-no-internet-logging to master

[Completes #54290822]
Improved logging robustness and handling in tests

Make the logging code more robust and add diagnostics.

Use before(:all) in spec_helper.rb to ensure a normal logger is
present. This avoids example groups having to restore a normal logger
if they have created a special logger.

[#56061680]

Suppress output from download_cache_spec.rb

Create logger based on StringIO $stderr to avoid logs appearing on
STDERR. Set $stdout to a StringIO to avoid download failures appearing
on STDOUT.

[#56330430]
Merge 56061680-logger-robustness-improvements to master

[Completes #56061680]
Gems for use with RubyMine debugger
Improved check for internet connection

Check for an internet connection by attempting a HTTP GET with 10
second timeout of a well known buildpack download artefact. Cache
the result in a class variable so that each invocation of the
buildpack makes the test once only.

Beware known problems with timeouts (https://www.ruby-
forum.com/topic/143840), although the code uses a timeout option on
the API, so a problem would represent a bug in the Ruby HTTP code.

Transient internet connection problems can cause the buildpack to
enter "no internet" mode for the duration of a buildpack invocation,
but that can be rectified by re-staging. If transient connection
problems occur after the check for "no internet", then the read-only
buildpack is not used as a look aside. This is desirable as a full
repository index may have been downloaded while the internet was
available and this index may refer to artefacts which are not present
in the read-only buildpack cache.

Stub the above HTTP GET in spec_helper.rb so that the test run ok with
webmock.

[#54290822]
Merge 54290822-improve-internet-detection to master

[#54290822]