Make regalloc2 panic-clean: always return errors when impossible constraints occur
Right now, the allocator can panic if the client provides impossible constraints, such as requiring two different operands to be placed in the same PReg.
While this represents a programming error in the client and shouldn't arise from an invalid input program, it is always better to bubble up errors; we should reserve panic!() and assert!() for conditions that can only be violated due to errors in regalloc2 itself.
I will report it here since I think it is a misuse on my part, but I ran into a panic when declaring a call instruction that returns (defines) r0 but also clobbers r0. The meaning of such an instruction is a bit ambiguous, but I guess regalloc interprets it as an impossible constraint.