killjava script and diagnostic improvements

Locate killjava script relative to $HOME. The application directory
path is not the same at droplet execution time as it is when the
buildpack runs, so it is necessary to use $HOME at droplet execution
time.

Tidy up killjava script to format messages more cleanly and ensure
they are flushed synchronously.

Use correct encoding for empty string. String.new produces an empty
string which is encoded with ASCII-8BIT rather than UTF-8. Use ''
instead since this is encoded with UTF-8. The net result is that
logging certain hashes now produces human-readable YAML rather than
YAML containing binary.

Make Buildpack.log flush each write

[#51899933]
[#51561265]
Merge branch 'oom-fix'
Document killjava script
Fix failing test

The -XX option got out of step with the testcase.

[#51561265]
Improve killjava

Improve the regex used to match processes. Also log the process
tree before and after issuing the kill command.

[#51899933]
Improve Play detection

As well as a start script, a Play application now also needs a
suitable Play JAR in the lib directory.

Add Play to the README.

[#51899933]
Merge 51899933- to master

[#51899933]
Fix Play documentation

[#51899933]
Merge 51899933- to master

[#51899933]
Test detection when no containers match

The JRE detect result (which is always non-nil for OpenJdk.detect)
does not determine the outcome of the buildpack's detect. There must
be at least one container which returns non-nil from detect before the
buildpack's detect will return any tags. Add a test to check this.

[#52289857]
Merge 52289857-improved-detection-logic to master

[Completes #52289857]
Reduce code duplication for code climate

[#52541875]
Merge 52541875-code-climate to master

[#52541875]
Rename Java options config file

The configuration file name must conform to the corresponding class
name.
Improve java opts doc
Merge remote-tracking branch 'upstream/master'