add excludes to Cache.import_tree()

Summary:
When we import files from local overrides, it's very important
that we don't include the `.peru` dir, because a) that could conflict
with the toplevel one and b) the user certainly doesn't want that
anyway. We've been getting that wrong until now, because we've never
tested an overridden module with imports (which would create the
`lastimports` file, otherwise `.peru` is empty).

To fix this, we need a mechanism to exclude specific paths from the
import. (We have `files` to whitelist paths, but that doesn't work for
us here.) This diff adds that new parameter. We'll fix local modules in
a subsequent diff.

We could consider exposing `excludes` to users as a rule field. I could
see legitimate use cases for that. @sean what do you think?

Test Plan:
Turns out `files` was untested at the Cache level. Add a ton
of unit tests for `files` and `excludes`.

Reviewers: sean

Subscribers: sean

Differential Revision: https://phabricator.buildinspace.com/D55