harder better faster stronger

fixes #1

this is pretty much a rewrite. highlights include:

* fixed negation-matching for .gitignore compatibility. in other words,
  "foo" followed by "!foo/bar" should not exclude "foo/bar", but "foo/*"
  followed by "!foo/bar" should
* glob(7)-compatible bracket expressions
* considerably faster. globs are converted to regexes, we just load up the
  files/directories once, and then grep our way to happiness