add --catch to the unit tests
use pathlib when dealing with paths in tests

Summary:
Before this change, tons of our tests fail on Windows, because they
hardcode paths of the form "a/b/c". Then `os.walk` spits out "a\b\c" and
everything dies. Making real `Path`s out of all of these should solve
the compatibility issue.