Keep recursion through ignore list within appropriate scope

Attempt to fix issue 275
Only increment the scandir baton when recursing

Fix #285 but needs testing for more complex directories
Check ignore paths based on correct baton level

Fix #287 but doesn't fix #144
Stop comparing terminating NULL in path string

Might save a few cycles...
Handle absolute .gitignore patterns properly

Pattern /b/c/d should ignore /b/c/d but not a/b/c/d