TST: Implement lock decorator for single tests
At the moment in the CI, for every build, we run our tests twice, one with a filter to run the tests marked as `single` (`@pytest.mark.single`) and the second one the ones NOT marked as `single` (we call them `multi`).

The reason for this, is that we usually run the tests in parallel (we can use 2 processes in the CI servers), but the tests marked as `single` can't run in parallel, as they need to use resources exclusively (like the clipboard or databases). So, in the run of the `single` tests, we just use one process.

While this approach is working well, it adds some extra complexity to the CI. I think we could avoid this complexity, if we create a decorator that uses `filelock` (https://github.com/benediktschmitt/py-filelock) or something similar that makes sure those `single` tests are not run in parallel.

This way we should be able to call pytest normally and just once.

@jreback @TomAugspurger does this make sense?