Make more type expressions valid in PEP 695 aliases and runtime contexts (#17404)
Previously some type expressions, when used as the value of a PEP 695
type alias or in an expression context, generated errors, even if the
code would work at runtime. Improve type inference of types in
expression contexts (this includes PEP 695 type aliases) to better
reflect runtime behavior.
This is still not perfect, since we don't have precise types for
everything in stubs. Use `typing._SpecialForm` as a fallback, as it
supports indexing and `|` operations, which are supported for types.
Also update stubs used in tests to better match typeshed stubs. In
particular, provide `_SpecialForm` and define `Any = object()`, similar
to typeshed.