WIP

Refactor the tests into their own directory.

Run these with a WD of either tests/ or / and it'll work, since
tests/__init__.py sets up the search path accordingly.

This is a cherry-pick for merging with feature/new-patcher in a PR.