apart and cancel are nc-aware
2699: use xthreaded, not threaded in apart
modify xthreaded and xreplace to fail gracefully

- xreplace leave args that don't implement xreplace alone
- xtrheaded allows objects that don't rebuild to return unchanged
modifications to simplify

== add quick exit for simplify if expr is Atom

== 3712: try return factored expression more often

== 3730: use as_content_primitive and cancel
Merge pull request #1925 from smichr/3712

3712 - simplify changes