Disallow non-lhs all-underscore variable names (#57626)
Addresses part of #57547. Currently, we only show the "all-underscore
variable name not allowed" error when the offending symbol is in value
position according to `compile`, but an earlier pass would keep them as
raw symbols regardless. This led to raw symbols making their way out of
lowering in an edge case.
This change: Reject all-underscore variables unless they're being
written to. Also, improve an error message slighly.