Convert to eslint 9
Upgrades eslint to version 9, as well as upgrading a few plugins.
I've tried to convert the old config as closely as I could, but I've removed a few plugins that weren't working well because they haven't received updates in a couple of years. It's also very possible I've misunderstood bits of the config!
I can now at least run npm run lint locally, though it generates a lot of errors. Currently 1346 errors! I haven't worked out yet exactly where they're coming from but I think the majority are updates to the recommended configs and are mostly in the test code. Possibly there are some extra rules we want disable on test code, particularly around use of any and other unsafe access. There are also some we probably want to fix.
I wanted to put up a PR with what I have, and either I or someone else can take a look at the set of errors and see what to do.