Code refactoring for gutil.PluginError

* I added `sudo: false` to [.travis.yml](https://github.com/gulpjs/gulp-util/blob/master/.travis.yml) for faster CI build.
  * It makes the build really faster than ever. Read the blog post [*Faster Builds with Container-Based Infrastructure and Docker*](http://blog.travis-ci.com/2014-12-17-faster-builds-with-container-based-infrastructure/) for details.
* I updated dotfiles.
  * I added `.jshintrc`.
  * I removed `.npmignore` and added `files` field to package.json instead.
* I replaced [lodash](https://lodash.com/) with smaller modules to reduce source size.
  * [_.defaults](https://lodash.com/docs#defaults) -> [object-assign](https://github.com/sindresorhus/object-assign)
  * [_.uniq](https://lodash.com/docs#uniq) -> [array-uniq](https://github.com/sindresorhus/array-uniq)
* I updated dependencies and devDependencies.
  * Maybe it will fix [this issue](https://github.com/gulpjs/gulp-util/issues/69) but I cannot confirm the problem.
* I introduced [istanbul-coveralls](https://github.com/shinnn/istanbul-coveralls) to the `coveralls` script.
* I updated `test` script to let JSHint work correctly.
* I updated badge URLs in readme.
* I updated test script.
  * I replaced `.should.not.equal(-1)` with [`.containEql`](https://github.com/shouldjs/should.js#containeqlothervalue).
  * I removed all the unused variables.

i think this whole fn needs some comments about what its doing