19238 - discovery timeout in clients

While reworking the discovery system to be pluggable we inadvertantly
lost the ability for a rpc client to override the discovery timeout.

This is complex because there are many factors contributing to the
timeout in order of precedence:

  - someone specifically setting the timeout in a script
  - the command line and initial options given to the client
  - the ddl file of the discovery method

We should retain the specific intent even when changing discovery
methods mid script so this reworking ensures that happen while restoring
the ability for clients to set it specifically
18663 - should be internationalized

Vendor the i18n gem at version 0.6.1 and update the gem spec to exclude
the vendored files and include the new dependency as a gem dependency
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