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
Merge remote branch 'mcphail/issue_275'