Implement configurable reporters

Much of this code is based on the configurable reporters in @spenceralger's gulp-jshint.

This implementation is somewhat consistent with the proposal in #21:

- Linting and reporting are handled as separate processes -- `gulpjscs()` lints the files and adds metadata to each entry in the vinyl stream, and `gulpjscs.reporter()` outputs a report based on the earlier linting
- Custom reporters are supported, either as module names or import paths
- This package implements a `fail` reporter that raises a PluginError if any lint checks failed

But it also differs from #21 in a few important respects:

- `gulpjscs.reporter()` lets existing reporter implementations write directly to `console.log` -- it does not generate a vinyl file object, but rather yields the original collection of vinyl files
- Other reporters do not fail when errors occur -- since this implementation passes through the original file collection, you can just pipe to the fail reporter after your primary reporter if you want to break the stream

Note that this is a backward incompatible change, since users will need to add a reporter to their gulp streams to get the same results as in previous versions.
`reporter(errors)` is going to output on `console.log()`, because that's how the existing reporters work.  I see compatibility with existing reporters to be a feature that's worth rendering output directly to `console.log`, and I would like to render exception data with the same mechanism that is used by the reporters.  Ideally the reporters themselves would render the exceptions however they see fit, but that doesn't quite fit with my goal of backward compatibility.  (Although #21 disagrees with me about prioritizing compatibility with existing reporters.  I'm happy to help with changing the JSCS reporter API to write to a provided stream instead of writing output directly to `console.log` if there's consensus on the JSCS dev team that we need to take that approach, but my first reaction is that such a change would be more disruptive than beneficial.)

See also [the comment on line 45](https://github.com/jscs-dev/gulp-jscs/pull/39/files#r19063917) about maybe ripping out this code altogether.