List class
A List object
- has a low-level array of reified items
- manages a ListIter chain for any unreified (lazy) items
- implements shift, push, pop, unshift, etc.
- implements element index lookup
- gets callbacks when its ListIter generates new values