Add framework to components list

Previously, the PlayJpaPlugin framework was not listed in the
components.yml file.  This change adds it.

[#49696153]
Merge 49696153-jpa-plugin to master

[Completes #49696153]
Add contribution guidelines

Previously there were no guidelines for contribution to the project.
This change adds those instructions.  This change also brings the code
in line with contribution guidelines and updates all dependencies to
their latest versions.

[#53287601]
Merge 53287601-contributing to master

[#53287601]
Ensure missing cached file behavior

Previously, the DownloadCache did the right thing (re-download) a file
when it had been moved out of the cached location as part of block
execution.  However, it was not clear from the test code that this was
its intended behavior.  This change adds a test that explicitly tests
this behavior.

[#52124997]
Merge 52124997-missing-cached-file to master

[Completes #52124997]
Force UTF-8 encoding when reading Groovy files

Previously, when opening Groovy files to inspect their contents, we
relied on the default encoding of the runtime.  This caused issues
when reading a file that had a different encoding than the default.
This change forces the encoding to be UTF-8 at all times.

[#54176012][#5]
Merge 54176012-groovy-container-error to master

[#54176012]
Exclude vendor/** from rubocop

Over the weekend Travis CI changed where bundles were installed during
testing.  This change excludes those bundles from the rubocop scan.

[#54180350]
Merge 54180350-rubo-cop to master

[Completes #54180350]
Create a basic logging framework for the buildpack

This consists of a LoggerFactory class in a Diagnostics module. The
module also contains some common constants and a method to determine
the diagnostics directory

The LoggerFactory class manages a single instance of a subclass of the
standard Ruby Logger. In normal usage, only one logger should be
created:

    logger = LoggerFactory.create_logger(app_dir)

 The created logger can be retrieved from the LoggerFactory to avoid
 having to pass it around:

 	logger = LoggerFactory.get_logger

Logging follows the style of the standard Ruby logger, which supports
both parameter and block forms:

	logger.info('success')
	logger.debug { "#{costly_method}" }

The logging level is configured by setting an environment variable
JBP_LOG_LEVEL to one of:

DEBUG | INFO | WARN | ERROR | FATAL

The default value if JBP_LOG_LEVEL is not set is configured in
config/logging.yml for consistency with other buildpack configuration
and in case someone wants to change it in a fork of the buildpack.

If JBP_LOG_LEVEL is set to an unrecognised value, the logging level is
set to DEBUG for safety (for instance, the user may have guessed that
TRACE is a valid value).

The logging level in JBP_LOG_LEVEL or config/logging.yml may be
specified using any mixture of upper and lower case.

Ruby's verbose and debug modes overrides the default logging level in
config/logging.yml to DEBUG. However, JBP_LOG_LEVEL still takes
priority.

Log entries are written to both app/.buildpack-
diagnostics/buildpack.log and either $stdout or $stderr depending on
the severity of the log message.

Log entries are verbose and include full details of the caller such
as the full path of the Ruby program making the call.

Set $stderr to synchronous writing.

Introduce debug logging of stack traces.

Introduce Buildpack.do_with_buildpack method to drive a buildpack
instance with a logger. Make the Buildpack constructor private so it
cannot be called from elsewhere. This ensures that any Buildpack
instance has a logger available to it.

Create a logger in the spec helper to ensure that any class under test
which needs a logger will have one. The LoggerFactory tests override
this by re-creating the logger.

Issue warnings if the logger is re-created, but suppress these
warnings when testing the LoggerFactory and the Buildpack classes.

Remove the diagnostic directory from the buildpack context

Substitute the buildpack.log filename into killjava script rather
than hard-coding it.

[#52775343]