Fix: ! negates .eslintignore patterns (fixes #1093)

For example, given the following .eslintignore, `/dir/bar.js` would be ignored, but `/dir/foo.js` would still be included.

```
/dir
!/dir/foo.js
```

I moved the logic that duplicated patterns by adding `/**` because the duplicate patterns were breaking the negation logic, so instead I just check each pattern twice.
This is the functionality introduced in #1082 regarding a pattern's children. It was moved here from lines 51-54 above because previously the paths with `/**` added came after the original paths, which incorrectly caused them to supersede a negated pattern. Old functionality is still logically equivalent, but now the order matters for negation.