feat(benchmark): add pluggable benchmark provider API
Introduce a `benchmark.provider` config option that lets a plugin own
benchmark execution end to end. A provider receives the expanded
registrations of a single test and returns the results Vitest reports;
the returned array is the sole source of results, matched to
registrations by name.
The built-in tinybench execution moves behind a default provider,
selected when `benchmark.provider` is `'default'`. A custom provider is
a module path whose default export exposes `getProvider()`; it is
resolved to an absolute path during config resolution and imported once
per worker. `createBench` now runs every path — `bench().run()`,
`bench.compare()`, `writeResult` and comparison storage — through the
provider instead of reading results back off the tinybench instance.
The benchmark name used for reporting and the getter-overuse warning now
comes from `options.name` when set, falling back to the full test name,
dropping the previous per-run index suffix.