Initial spike of control comment logic

A commonly requested feature is to be able to disable checks with comments
inside your manifest files. This is a first prototype of this feature.

Blocks of lines can be ignored by boxing them in with `lint:ignore:<check>`
and `lint:endignore` comments

```puppet
class foo {
  $bar = 'bar'
  # lint:ignore:double_quoted_strings
  $baz = "baz"
  $gronk = "gronk"
  # lint:endignore
}
```

Checks on single lines can also be ignored by just adding a trailing
`lint:ignore:<check>` comment to that line.

```puppet
  $this_variable_has_a_really_long_name_and_value = "[snip]" # lint:ignore:80chars
```

Telling puppet-lint to ignore certain problems won't prevent them from being
detecting, they just won't be displayed or automatically fixed. If you want to
see what problems puppet-lint is ignoring, you can add `--show-ignored` to your
puppet-lint invocation.

I'm not entirely sold on the format of the comments at this stage, this is just a quick prototype, I'm interested in your thoughts.

/cc #68 #214 #247 @ccaviness @vStone @Aethylred @blkperl