Add a way to create options and arguments for any type that implements IParseable/ISpanParseable
Ok, this is a bit of a vibe-coded fever dream.
I was looking at #2574 and wondering why we had to keep patching this list. IParseable/ISpanParseable have been in the BCL for quite some time, after all. I worked with Copilot to iterate on this, and initially trying to get these interfaces integrated into the existing Argument shapes meant that there would be reflection used - because the argument conversion would try to probe the type to see if it was ISpanParseable and then try to call that member.
Instead, I surfaced subclasses of Option<T>/Argument<T> that encode the conversion routine to use the appropriate TryParse member. At least for single tokens, this seems to work like a charm! For handling multiple tokens, we unfortunately hit the reflection-based paths that exist today even for these new subclasses. But at least there's some statically-verifiable way to do this now!
Strictly speaking none of this is necessary, and thanks to the fact that the Argument<T> and Option<T> types are unsealed this could be done at a layer above S.CL itself.