Remove extra dot from warning types docs.
Add tests for JsDuck::Logger.

Make the Logger testable by defining a LoggerCls and instantiating
it as global Logger - allowing us to instantiate the LoggerCls
separately in tests.

Test the enabling/disabling of warnings.
Extract Warnings class from Logger.

Test the warnings system through the Warnings class instead.
Switch Logger class back to the old system of including Util::Singleton.
Extract Process::NoDoc from Process::Lint.

Perform missing docs reporting in separate class.
New nodoc warning to replace no_doc* warnings.

The new nodoc takes parameters, but at the moment the parsing of
more than one parameter doesn't work yet.
New Log::WarningsParser class for parsing --warnings.
Move Warnings and NoDocWarning to JSDuck::Log namespace.
Rename JsDuck::Log namespace to JsDuck::Warning.
Refactor warnings system.

Create four warning classes to handle a particular set of warnings:

- Warning::Basic -- the usual warnings :tag, :link, :global, ...
- Warning::Nodoc -- the :nodoc warning type together with its
  parameters.
- Warnings::Deprecated -- the old :no_doc* warnings which delegate to
  the new :nodoc warning.
- Warning::All -- composite warning that allows enabling/disabling all
  warning types together.

Then inside Warning::Registry delegate #set and #enabled? calls to these
warnings.
Use custom WarnException in JsDuck::Warning::*.

This way when an actual error happens, we don't catch it with the
generic 'rescue Exception => e' block.
Merge the :nodoc warning and refactored warnings system.

Fixes #436