Package task without git

Previously, the package task required a git repository to work
properly.  It's possible that the package task will be run from an
archive download instead.  This change updates the package task to
handle a non-git repository.

[#69076566]
Merge 69076566-package-without-git to master

[Completes #69076566]
Configurations without nested hashes

With the addition of the `config/java_opts.yml` the offline package
build was broken.  The root cause is that when the packager detects a
configuration without `version` and `repository_root` it then attempts
to inspect the values of the configuration as if they
were nested hashes (like the `config/tomcat.yml` file).  The addition
of the `java_opts` configurations was the first time we've had a
configuration that didn't meet the typical conventions and the
packaging build broke.

This change inspects the values of a non-repository-configuration and
only inspects the values if they are also hashes.

[#69170446]
Merge 69170446-nested-configurations to master

[Completes #69170446]
Improve clean semantics

The difference between clean and clobber in rake is quite subtle and
difficult for most users to grok.  This change makes all created
artifacts (regardless of whether are a scratch artifacts or
deliverables) part of CLEAN.  This means that a user will be able to
run either `rake clean` or `rake clobber` and get the same effect.

[#69170656]
Merge 69170656-improve-clean to master

[Completes #69170656]
Tests

The previous addition of new http environment variables didn't include
enough testing.  This adds that testing.

[#69073918]
Merge 69073918-test-proxy-support to master

[Completes #69073918]
Test Ordering Fix

Previously if the environment was overridden, it was not set back to
its original state properly.  This change updates the
application_helper to work properly.

[#69073918]
Merge 69073918-test-ordering-fix to master

[Completes #69073918]
Unify version detection

A previous attempt at making the package build work without being in a
git repository ended up duplicating quite a lot of code.  This change
refactors that original effort so that it re-uses the BuildpackVersion
logic that already existed.

[#69076566]
Merge 69076566-no-git-repository to master

[Completes #69076566]
distZip-style applications

This change adds support for distZip-style applications[1].  This
means applications that are packaged as a start script in bin/ and
classpath JARs in lib/ can be run.  This package can be created with
the Gradle application plugin, but also by the sbt-native-package
plugin.

[1]: http://www.gradle.org/docs/current/userguide/application_plugin.html

[#69255612]
Merge 69255612-dist-zip to master

[#69255612]
Improve common distZip-style code

This change is a refactoring to get the common distZip style code into
a better state.  There are 4 distZip-style containers; Ratpack, Spring
Boot, generic distZip, and Play Framework.  Those containers (except
for the massively complicated Play Framework one) now extend off of a
DistZipLike container that contains most of their functionality.  This
means that implementations of this style of container (likely to show
up more and more) only need to implement detection algorithms and id
values (some would output with a version, others not).

In addition, this sorts out a bug where the distZip container was
incorrectly detecting for Ratpack applications.

[#69332450]
Merge 69332450-dist-zip to master

[Completes #69332450]
JAR file detection

Previously, the detection algorithms for Ratpack and Spring Boot
contained a bug.  This bug manifested itself as detection a JAR that
_almost_ matched the name required for discrimination, but when
extracting the version, everything would crash.  This bug was hidden
during testing because the ordering that files were listed affected
whether the bug manifested.  This change updates the detection
algorithms so that the ordering of the files no longer matters.
Merge branch 'detection'
CodeClimate

This change refactors some code to remove duplication.
Follow redirects in DownloadCache

Previously, if the DownloadCache encountered a 3xx (redirection)
response, it failed the download because it didn't know what to do
with it.  This change adds support for following a redirect (301, 302,
303, 307) and downloading the file as if it was the original URI.

[#69089318]