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 $stderr.

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 a Buildpack.drive_buildpack_with_logger method to create a
logger and then yield a new Buildpack instance to the given block.
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.

Link to stackoverflow article on installing gems in support of
the RubyMine debugger.

[#52775343]
Keep Rubocop happy

[#52775343]
Merge 52775343-verbose-environment-variable to master

[Completes #52775343]