fix(test): unblock dotnet test discovery and exception assertion
Two latent issues exposed by running the xunit suite:
1. Microsoft.NET.Test.Sdk 18.3.0 defaults to Microsoft.Testing.Platform
mode, which expects a MTP-compatible test runner. Furion.Xunit pulls
xunit v2 (no MTP runner) and xunit.v3.assert was assertion-only, so
no runner was registered with vstest — discovery returned zero
tests. Adding xunit.runner.visualstudio 3.0.2 restores the v2 vstest
adapter path that Furion.Xunit's TestFramework actually uses.
2. S8TimeoutEvaluatorTests.TimeoutParams_Throws_OnInvalidJson asserted
Throws<JsonException> but System.Text.Json throws JsonReaderException
(a subclass). xunit v3 Assert.Throws<T> is strict-typed; switching to
ThrowsAny<T> restores the test author's original intent (any
JsonException family exception).
Verified: dotnet test on net8.0 — 54 / 54 passed, including the new
S8ActiveFlowWatchServiceTests (5 cases for N-2 payload parser).