More reactive domain work

- observers' autodestroy behavior is now optional
- tests