Move the Linter::Result class into its own file.

Clears up a bit of the clutter inside of linter.rb and makes it clearly
it's own entity within the linter.
De-duplicate validation methods inside of the linter

Validation hook runners were essentially the same except by whom they
were targetting.