Tolerate trailing slashes on repository roots

[#59918120]
Merge 59918120- to master

[Completes #59918120]
Retry failed downloads

HTTP GETs for downloads are retried up to 5 times. This includes both
the initial GET of a buildpack invocation (detect, compile, or
release), which doubles as an internet availability check, and
subsequent GETs when the internet has already been checked and is
deemed to be available.

The retry limits for the initial GET and the subsequent GETs are coded
as two distinct constants in case we want to make the values
diverge. However, I think it makes sense to keep them the same
because a user who got spurious internet unavailable behaviour
because of a transient error would probably be just as put out as a
user for whom a transiet error cropped up during a subsequent GET.

The downside of retrying the initial GET is that when the internet
really isn't available, it takes longer for the buildpack to realise.

This shouldn't be an issue unless the GET request takes a significant
time to fail, in which case the effect is to multiply the total such
delay per buildpack invocation by a factor of 5. Reducing the retry
limit for the initial GET would alleviate this somewhat at the risk of
not handling transient errors so well. A better solution, when the
delay is unacceptable, is for the user to fork the buildpack and
disable remote downloads in config/cache.yml.

[#57311364]
Merge 57311364-retry-failing-downloads to master

[Completes #57311364]
[#60250292]test
Document the need to use metaspace with OpenJDK 1.8

[#60250292]
Merge 60250292-java8-but-permgen to master

[#60250292]
Revert "[#60250292]test"

This reverts commit eed077949c7ce2df97a510e90aafe1701a0ee9d6.
Bump new-relic to 3.1.+

[#58173176]
Merge 58173176-new-relic-3.1.1 to master

[#58173176]
Refactor complex method

[#57311364]
Add examples other than Tomcat

[#59910222]
Merge 59910222- to master

[Completes #59910222]
Clarify meaing of total available memory

Also note the effect of scaling an application.

[#60311680]
Merge 60311680-clarify-total-memory to master

[Completes #60311680]
Set heap and permgen sizes to maximum values

Set -Xms to the same value as -Xms and -XX:PermSize to the same value
as -XX:MaxPermSize. This ensures that the committed memory for the
heap and the permanent generation does not increase during the
lifetime of the application. This should reduce the possibility of
warden killing the JVM process once the application is running.

[#59731874]
Merge 59731874-xms to master

[Completes #59731874]
Set metaspace size to maximum value

This is to match the behaviour for permgen size.

Also document the new size matching behaviour.

[#59731874]
Merge 59731874-xms to master

[Completes #59731874]
Split additional memory options into separate Java options

[#59731874]