Add support for git-specific ignore patterns

Negated patterns

.gitignore can contain negated rules, ie. "!*.jpg"

This can be useful when ignoring "everything but", ie.

--- .gitignore
/*
/!img/
---

This will ignore all files and dirs in the current dir, except /img/

Leading slash

Git ignore patterns with "/<pattern>" is interpreted as <pattern>
in the current folder. Support this by matching the pattern without
leading slash.
Update tests
Handle single-level gitignore patterns

Git ignore patterns with "/"-prefix, should only
match on the level of the defining .gitignore.

Use depth in ignore definition and match.
Add tests for gitignore
Fix git dir matching

Match by base of file, if pattern is not
"dir" pattern, ie. trailing slash:

- ✓ "node_modules"  ~ "node_modules/"
- ✗ "node_modules/" ~ "node_modules"
- ✓ "node_modules"  ~ "node_modules"
Merge pull request #49 from homburg/feature-gitginore-negative-and-absolute

Add support for git-specific ignore patterns