[ty] Tighten up a few edge cases in `Concatenate` type-expression parsing (#24172)
## Summary
There were:
- a couple of places where we emitted two diagnostics where one would do
- a few places where we fell back to overly precise inferred types in
error cases (inferring types like `(Unknown, /) -> None` where `(...) ->
None` would arguably be better)
- a few places where we correctly emitted a diagnostic, but didn't have
an ideal error message
This PR just makes some minor cleanups in that area
## Test Plan
new mdtests