Backtraces from `throwSTM`
## Summary
Unlike other monadic throw operations such as `throwIO`, `throwSTM` does not have a `HasCallStack` constraint and does not use `toExceptionWithBacktrace`. I think it probably should. However, `toExceptionWithBacktrace` requires `IO`, and it's unclear whether it would be safe to use it.
## Steps to reproduce
Throw an exception with `throwSTM`, observe that it has no backtrace.
## Expected behavior
I would expect to at least get call stacks from `HasCallStack`.
issue