maint - fix visibility of Logger::Base#start and log

start and log are parts of the public api of Logger plugins

Logger#start is invoked by MCollective::Log#configure
Logger#log is invoked by MCollective::Log#log

As such these virtual methods should not be considered part of
MCollective::Logger::Base's private api.
MCO-328 add reopen to Logger::Base

Here we add the reopen method to the Logger api.  This will be used to have the
logger reopen the logfiles on signal, for better interaction with logrotate.
MCO-328 Add Log.reopen that just delegates to @logger.reopen

Loggers are not used raw by the rest of the codebase, but via their owner
MCollective::Log.  Here we expose the Logger#reopen method through the
MCollective::Log class
maint - add basic file_logger_spec.rb

Here we add some basic testing to File_logger.   There's not much
to test, as most of File_logger simply delegates to ::Logger.
MCO-328 Implement reopen for File_logger
MCO-328 hook SIGWINCH to Log.reopen

USR1 and USR2 are already taken, so we're left with SIGWINCH.  SIGWINCH is sent
when the terminal driver detects that the terminal has changed size, and is
most applicable to full-screen console applications.
(MCO-68) Allow --batch flag to use percentages

This commit adds the ability to RPC::Client::call_agent_batched to
determine a batch size based on a percentage of the amount of hosts
discovered.

This is achieved by softening the argument validation of the --batch
flag to also allow strings which match the regular expression /^\d+%?$/.

The ability to override and reset global batch sizes has been kept.
Merge pull request #218 from richardc/MCO-328_reopen_logs_on_signal

MCO-328 reopen logs on signal
Merge pull request #219 from ploubser/mco-68

(MCO-68) Allow --batch flag to use percentages
MCO-418 Explain that we're ignoring the message

Currently if a message exceeds its TTL we raise MsgTTLExpired which is logged
at WARN and then don't process the message.  Here we tweak the message a little
so that it's more apparent to the user that the message was rejected by
validation.
Merge pull request #220 from richardc/MCO-418_ttl_warnings

MCO-418 Explain that we're ignoring the message
(MCO-408) Add ability to globally define if agents should be loaded

This commit adds the global configuration option, 'activate_agents',
which functions similarly to 'activate_agent' which can be specified
on a per agent bases.

When set to false no agents will be loaded. This behaviour can be
overridden on a per agent basis.

The current default behaviour of loading all agents by default has
been kept.
Merge pull request #221 from ploubser/mco-408

(MCO-408) Add ability to globally define if agents should be loaded
(MCO-272) Add ability splay registration plugins

This commit adds the registration_splay global configuration option.
When set starting the registration thread will be delayed by a random
amount of seconds between 0 and the registation interval.
Merge pull request #222 from ploubser/mco-272

(MCO-272) Add ability splay registration plugins
MCO-193 add 'discovery_timeout' to the configuration file

Here we add a discovery_timeout option to the configuration file, which is
allows you to set a default for the --discovery-timeout cli option.
Merge pull request #223 from richardc/MCO-193_discover_timeout_configfile

MCO-193 add 'discovery_timeout' to the configuration file
MCO-156 - don't set environment variables with the value of nil

Here we change the behaviour of the Shell helper filter the setting of any
environment variables with the value nil.

The initial usecase is the ability to inherit LC_ALL from the environment of
the mcollectived, to achieve this the user would use something like this:

  Shell.new('date', :environment => { 'LC_ALL' => nil })
Merge pull request #224 from richardc/MCO-156-LC_ALL

MCO-156 - don't set environment variables with the value of nil
MCO-421 Do signal processing in threads

In ruby 2.0 and onwards it's not permitted to do anything that would
block in a signal handler.  As our control flow doesn't have an
obvious place to process a raised flag, we instead take the approach
of spinning off a new thread to do the processing.

Tested on ruby 2.1.2