The zip task has always been a bit of a bear, hopefully it's better now.

  * chose shorter names for almost everything: flatten, dirs, files
  * no more goofy output file/path nonsense, just provide a single output_path
  * what does clean dirs do? looks like some sort of whitespace stripping,
    probably unnecessary
  * is the respond_to("~") the best way to test for regexps? why not is_a?(Regexp)
  * I'd love to rewrite the whole expanded exclusions memoization/transformation
    to be more functional, isolated.
  * the tests are kinda messy, too... could clean up those contexts