Fix#17503 and #15927.
This converts the NOT_SUPPORTED_RULE_NAMES list over to a JSON file, and implements a Rationale column to the markdown table rendered for each plugin issue. The JSON file conversion is done because I think it'd be useful to 1) reuse this file in Rust, and so this makes it much easier to parse in Rust, and 2) potentially also reuse it in oxlint-migrate.
You can see the markdown output after this change here:
https://gist.github.com/connorshea/2b6803c9e2045be9928d394d9112f0ae
The content of the list should be identical (other than the rationale values I've added), with a few exceptions:
- Added [`vue/jsx-uses-vars`](https://eslint.vuejs.org/rules/jsx-uses-vars.html#vue-jsx-uses-vars) as an unsupported rule with the rationale that it _should_ already be implemented via no-unused-vars, as it only applies to vue components using JSX. Though I'm not 100% sure if that is actually supported properly at present for Vue files.
- I removed [`vue/define-macros-order`](https://eslint.vuejs.org/rules/define-macros-order.html#vue-define-macros-order) from the unsupported list, as it seems like it does not require template parsing and should be possible to implement?
- Added `n/prefer-node-protocol`, `n/no-process-exit`, and `n/file-extension-in-import` to the unsupported rule list, as they are implemented by other rules in oxlint already.
- Added `vue/no-unused-properties` and `vue/no-undef-properties` as they both require Vue template parsing.
- Added `jest/no-unnecessary-assertion`, `jest/unbound-method`, `jest/no-error-equal`, `vitest/unbound-method`, and `vitest/prefer-vi-mocked` to unsupported rules with rationale that they require type information.