Split checking and reporting logic

This will allow the linting logic to be used separately within Ruby without printing unnecessary garbage to stdout.

```irb
irb(main):001:0> require 'puppet-lint'
=> true
irb(main):002:0> l = PuppetLint.new
=> #<PuppetLint:0x10ef12fe8 @manifest="", @code=nil, @statistics={:warning=>0, :error=>0, :fixed=>0}>
irb(main):003:0> l.code = File.read('../test.pp')
=> "class test { }\n"
irb(main):004:0> l.path = "../test.pp"
=> "../test.pp"
irb(main):005:0> l.run
=> nil
irb(main):006:0> l.problems
=> [{:path=>"../test.pp", :kind=>:error, :message=>"test not in autoload module layout", :fullpath=>"/Users/tsharpe/code/puppet-lint/test.pp", :linenumber=>1, :column=>7, :check=>:autoloader_layout, :file
name=>"test.pp"}, {:path=>"../test.pp", :kind=>:warning, :message=>"class not documented", :fullpath=>"/Users/tsharpe/code/puppet-lint/test.pp", :linenumber=>1, :column=>1, :check=>:documentation, :filena
me=>"test.pp"}]
```

/cc #124