Introduce the following -fsanitize-recover flags:
- -fsanitize-recover: Enable recovery for all checks enabled by -fsanitize= which support it.
- -fno-sanitize-recover: Disable recovery for all checks.
- -fsanitize-recover=<list>: Enable recovery for all selected checks or group of checks. It is forbidden to list unrecoverable sanitizers here (that is, "address", "unreachable", "return").
- -fno-sanitize-recover=<list>: Disable recovery for selected checks or group of checks.
These flags are parsed left to right, and mask of "recoverable" sanitizer is updated accordingly,
much like what we do for -fsanitize= flags.
-fsanitize= and -fsanitize-recover= flag families are independent.
CodeGen change: If there is a single UBSan handler function, responsible for implementing multiple
checks, which have different recoverable setting, then we emit two handler calls instead of one:
the first one for the set of "unrecoverable" checks, another one - for set of "recoverable"
checks. If all checks implemented by a handler have the same recoverability setting, then the
generated code will be the same.
Maybe remove the HelpText and leave this undocumented now that it's deprecated.