A "double buffered" List implementation, optimized for
cases where the contents rarely change.
This implementation acts superficially like a normal list
except that it actually is implemented by always creating
a new private copy of the list on each modification.
This allows iteration and such to never have to worry about
comodification exceptions. The downside is that
it is relatively expensive to modify the contents.