gh-853 - components should fire 'teardown' before removal from DOM

**not ready for merge**

See #853