List work

This adds c++ implementations of the list subclasses for implementing List and ContainerList behavior. It also adds a null-testable smart pointer class for tracking the lifetime of a CAtom pointer without requiring Python weak references.