fix: improve `split` discriminant generalization strategy

This commit also
- improves `split` error messages.
- adds `trace.split.failure` option.
- uses new convention for trace messages.

closes #4390
3 files changed