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