18663 - should be internationalized

Add basic i18n support to the logging system, locale information is
stored in $lib/mcollective/locales/en.yml - this location is not yet
configurable and we do not yet support setting your own locale.

At present the logging system supports logging standard messages:

   Log.logmsg(:PLMC1, "default message", :info, :version => "1.2.3", :name => $0)

This will parse a message from the local database that looks like:

   PLMC1.pattern: Started mcollective %{version} by ${name}

The locale database also support PLMC1.example and PLMC1.expanded which
would hold a sample error message and expanded text showing the
background for this message.

Logging of exceptions has been standardized:

  Log.logexception(:PLMC2, :error, :e => exception, :other => "data")

This will log the message in PLMC2 while interprolating %{error} into
the resulting text, other data will also be passed into the string

An application was added to support showing details on the error
messages and eventually the whole 'mco plugin doc *' functionality will
move into this application

   mco doc PLMC1

There is a new exception class called CodedError that can contain the
code for a error and supports logging itself using the log method on the
exception class.

We use this to ensure that all exceptions are logged when they get
raised and to provide some consistant UI around reporting of our own
errors.  Some classes have been updated to raise this directly while
others like the DDL one provide a helper to raise DDLValidationError
exceptions - which are now a subclass of CodedError

The runner and application plugins both understand the CodedError
classes and will show errors about them in a useful way.

A utility module - Translatable - has been added that can be used as a
mixin to log lines and exceptions

This commit updates a sprinkling of classes throughout to use messages,
by no means a exhaustive update more aimed to cover the major use cases,
we'll firm that up over time