Add UncapturedHigherOrderOpError to always raise exceptions for cond. (#108027)
We want cond to always throw errors despite user's torch.compile mode.
The current implementation is to
1. catch the UserError.GRAPH_BREAK_IN_CONTROL_FLOW and once saw it, we directly raise: once in [break_graph_if_unsupported](https://github.com/pytorch/pytorch/blob/bad3f2db40ffa491181fc7df5dc310830326d9ec/torch/_dynamo/symbolic_convert.py#L1250), which catches and raises for call_function (entry point of higher order operator) and a few others.
2. The raised exception is caught and raised again in [step](https://github.com/pytorch/pytorch/blob/bad3f2db40ffa491181fc7df5dc310830326d9ec/torch/_dynamo/symbolic_convert.py#L691), where all instructions' exceptions are handled.
3. At the top-level, we treat it like an hard error and not supressing the errors.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/108027
Approved by: https://github.com/zou3519
ghstack dependencies: #108025, #108026