Encapsulate lint output into Reporter

In preparation for supporting the output of XML, this encapsulates the
current output mechanism into a `DefaultReporter` class. It also sets up
the `Reporter` abstract parent class so that all reporters can reuse
common code.

Change-Id: I14c55c17bb2f9ac62b9f732283167cee02c11f02
Reviewed-on: https://gerrit.causes.com/19664
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Aiden Scandella <aiden@causes.com>
Reviewed-by: Greg Hurrell <greg@causes.com>
Add specs for CLI class

Adds a spec suite for the currently existing functionality for the `CLI`
class.

This requires a bit of a refactor, as the previous implementation made
the `initialize` implicitly invoked the `run` method, which made certain
parts of testing difficult. The refactor simplifies this by treating the
`initialize` method as just that: a place to initialize everything the
`CLI` object needs to run, without actually running anything.

This will make testing new features activated via command-line switches
much easier going forward.

Change-Id: I84f50eb4bf9b1dfcb81c8c121c67660ab238e5da
Reviewed-on: https://gerrit.causes.com/19665
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Shane da Silva <shane@causes.com>
Add XMLReporter

Adds the implementation and specs for a lint reporter that outputs an
XML document.

This will be followed by a commit that adds support for the '--xml'
switch to the CLI so that this reporter is used.

Change-Id: I5cae8137d7ad1421d90f3f7b1cd9355486a5e156
Reviewed-on: https://gerrit.causes.com/19666
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Shane da Silva <shane@causes.com>