Revert PR #1462 and provide alternative fix

This rolls back the changes to fnmatch parsing from PR #1462 commit 2e40a60e847d6c128af23e24ea7a8efebd2427da except for the tests that were added.  Instead this adds couple of new flags that can be passed in when attempting to parse an fnmatch pattern.  Also, this changes the pathspec match logic to special case matching a filename with a '!' prefix against a negative pattern.

This fixes the broken libgit2 build.