Breaking: Refactor .eslintignore functionality 

This is the first part of a massive refactor for `.eslintignore` functionality. Some of the changes:

* There can now be only one `.eslintignore`, no more cascading ignores through `.eslintignore` in subdirectories (this was an unintentional feature previously).
* Renamed `--force` to `--no-ignore` to be reflect what it does.
* Added `--ignore-path` to allow overriding the ignore file that is used (matches JSHint's `--exclude-path`).
* Instead of globbing the ignored paths and then comparing that during traversal, there is just one traversal that uses `minimatch` to compare patterns.
* Added `debug` so it will be easier to debug issues with this behavior in the future.
* Removed unnecessary code from config.

(refs #928, fixes #901, fixes #837, fixes #853)