Extend TrackedList so that TrackedList is returned from operations that return
new iterables (like __add__, __mul__, __getitem__, and __getslice__ for Py2).

Also have more methods (like pop and __iadd__) trigger the "changed" attribute.

Add a set of unit tests for the TrackedList.