Run GC in file leak check
This fixes a problem with `file_leak_context` (xref https://github.com/pandas-dev/pandas/pull/30096#issuecomment-1222094485).

Demo:

```py
import gc
import pandas as pd
import pandas.util._test_decorators as td

with td.file_leak_context():
    reader = pd.read_csv("t.csv", iterator=True)
    reader.cycle = reader
    del reader
    # gc.collect()
```

Here we have a reference cycle `reader -> .cycle -> reader` that is only cleared when GC is run. On my machine, without the `gc.collect()` statement, `file_leak_context` detects a file leak where there is none.

The PR fixes this by explicitly calling `gc.collect()` before collecting the leaked files. I also changed an equality to a subset check to make the code robust against additional closed files (due to the `gc.collect()` call, or other reasons that I don't have any examples for).

cc @jbrockmendel 

- [ ] closes #xxxx (Replace xxxx with the Github issue number)
- [ ] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [ ] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

does this merit a test? Happy to add one, but I think it is difficult to come up with one that is both not too contrived and guaranteed to work (the one above scores good on the former but bad on the latter) I'm not sure I conceptually agree with explicitly running the garbage collector. Is this not something we should just handle via weak references? That would require all references that might indirectly reference any open files to be weak references. Actually I think it’s likely not even the standard library guarantees this. The standard idiom is to use `with` to make sure everything is closed immediately when you’re done but that’s not possible with Pandas’ idiom. Ah sorry didn't notice the full context to this. Your explanation makes sense, though this seems symptomatic of other problems in the code base that ideally _should_ be addressed Thanks @jonashaag 