Startup and the Linter Class
----------------------------

The two main classes in ``pylint.lint`` are
``.pylint.lint.Run`` and ``.pylint.lint.PyLinter``.

The ``.pylint.lint.Run`` object is responsible for starting up pylint.
It does some basic checking of the given command line options to
find the initial hook to run,
find the config file to use,
and find which plugins have been specified.
It can then create the main ``.pylint.lint.PyLinter`` instance
and initialise it with the config file and plugins that were discovered
when preprocessing the command line options.
Finally the ``.pylint.lint.Run`` object launches any child linters
for parallel jobs, and starts the linting process.

The ``.pylint.lint.PyLinter`` is responsible for coordinating the
linting process.
It parses the configuration and provides it for the checkers and other plugins,
it handles the messages emitted by the checkers,
it handles the output reporting,
and it launches the checkers.
