Add mdtests for Ruff
Summary
--
This PR adds the `ruff_test` crate, a parallel crate to `ty_test` for Ruff, to
enable the new mdtests in `ruff_linter`. I opted to follow the `Db`-based
structure of `ty_test` to simplify the integration, but we end up basically just
unpacking the files from the `Db` to call the `test_contents` function from the
linter.
Currently stacked on #24616
Test Plan
--
I copied over UP046_0.py into a new mdtest. This was selected basically at
random, and I should probably either pick a shorter first test to port, or also
port over the other UP046 tests and take better advantage of the mdtest format.
Currently the whole file is just in a single code block, but it demonstrates the
basic functionality, including config loading and diagnostic snapshotting.