Update: Factor ignores out of Config

Fixes #958.

I thought that using the term "ignores" everywhere and never "exclusions" would make things more consistent and less confusing. The only confusing part now is where `isExcluded` is changed to `ignores.isIncluded`, but I think `ignores.isIncluded` makes sense by itself, it's just an odd difference. Open to suggestions.

All of the logic remains the same, but now instead of calling `Config.getExclusions` for an exclusions array and doing the matching logic in cli.js, you load up `Ignores` with a config object and then call `Ignores.isIncluded` which encapsulates the matching logic. (By the way, it's kind of confusing how the Config object is called "configHelper" in some places in cli.js.)
`config` is used throughout as rule configuration, anything that isn't rule configuration should have a different name. I'd rather just pass in the CLI options object and let `IgnoredPaths` pick off what it needs. 

WRT an extra method to setup stats, this is to allow easier testing. By separating the loading from the construction, you can construct a new instance and stub outs it's state rather than forcing it to load from someplace else.