Work on data updating in adapters and ListView

The adapter and ListView system has several open issues about data
updating, and ListView's reaction for scrolling. From discussion with
tito and reference to SproutCore, more information needs to be added
about the nature of data change, which will be different for
ListProperty and DictProperty.

So far, for lists, a new cls parameter is added to ListProperty, so
that instead of using ObservableList always, it will check to see if
an ObservableList variant is provided. In this case cls will be set
to a new RangeObservingList for ListAdapter. Something similar will
be needed for DictAdapter.

As this branch has been open locally for a while, several discussions
with quanon about data updating resulted in a fix for how ListView
handles its adapter binding, to assure proper bindings to ListView
updating methods are reset when adapter changes.

Also, in the same area of ListView, the bind_triggers_to_view method
has been renamed to data_changed.
Added new ObservableDict variant

And improved the handling for data changes in the adapters and in
ListView.

Removed old call to bind_triggers_to_view() for merge with master.
Name-spaced the individual ops

Added missing declaration of cls in DictProperty pxd entry

Added checks for recursion in set ops for the range observing observers.
Improved the delete op

Improved the delete op in callbacks to ListAdapter and in ListView.
Handled add ops, when adding first item

Fixed case where deletion takes data to 0 length, followed by add type
ops.

Made explicit op names for list.extend() and dict.update().
Introduced concept of general change info

Along with awareness for range changes, can report changes to sets,
ordering, as happens with sorting, drag and drop, etc.

Added a boolean for controlling the carrying of selection to list item
children.
Resolved merge conflicts with master.
Worked through data updating for list adapter.

Developed the same approach for dict adapter, both mainly working in
data_changed(). ListView has a data_changed callback also, which now
has code working in concert.

Added a small testing app, from which unit tests can be derived later.

Conflicts:
	kivy/uix/listview.py
Added range check for the setslice op

Also Commented change_info in ChangeRecordingObservableDict to be
consistent with the list equivalent.
Fixed bounds checking on slice op.
Fixed a recursion bug, and did some renaming

Fixed a bug in the setattr method of the ObservableDict subclass that
was causing recusion (was setting change_info with no guard).

Gave data change callbacks different names, to help decipher multiple
callbacks.

Started working on delitem for the data change ops for DictAdapter.

Conflicts:
	kivy/uix/listview.py
Fixed timing issues with running tests

Added schedule_once calls to help with timing issues related to
testing adapters.

Credit: quanon.
Added a ChangeMonitor; Worked on dict ops

Added ChangeMonitor  to work as a 3rd party to the change-recording
ObservableList/Dict, so that change_info can be stored without
triggering a data_changed callback.

Fixed order of change_info sets to come after call. Revamped list ops
accordingly.

Got setitem and delitem working for dict ops.
For list ops, added setitem_del; fixed setitem_set

setitem_del fires delitem (from ObservableDict). Thus, added conditional
to ignore setitem_del in setattr, and for setitem_set to be handled
correctly from setattr.
Implemented clear() in the dict ops.
Removed the remove op from ObservableDict

dict does not have a remove op, so removed it was from ObservableDict
and the subclasses and related recent work.
Implemented pop and popitem dict ops

With popitem, it became apparent that the change_monitor attr could be
deleted, so protections were added. Also, to keep the change_monitor
attr out of the dict and its methods, keys(), len and iterator methods
of dict were overridden.
Implemented setitem_add for dict ops

Also added a note about a method for DictAdapter that would do an insert
(at an index of sorted_keys).
Implemented setdefault for dict ops

Fixed lingering code, in light of newly overridden dict methods.
Implemented update for dict ops.