Bug 936643 - [Settings] Implement ListView.destroy()

- Adds `Observable().unobserve` as well as `ObservableArray.unobserve()`
- Adds `ListView().destroy()`
- Adds an element cache for `ListView` so that a re-used element can automatically destroy it's old `ListView`