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