Fix #713: Add cleanupObservers flag to List

Add a flag, defaulted to true, to set whether to cleanup the observers.
This is used by the tree plugin, which will set it to false, so that
the observers are not cleaned up when the tree plugin is used.
The child quries in the tree plugin set the _numObservers value to > 1,
which ends up making the List not refresh the observer for the main
query. Changes to the the main row data in the store would not be
reflected in the grid as a result.
CHANGES.md: Note tree observer regression fix
Fix #684: deselect row before removing it on store notify

Includes additional unit tests.
CHANGES.md: Note Selection event on store item removal fix
Update OnDemandList.js

Correct for level 0