Using new single threaded list and map constructors for var store.
Allows running a subset of via command line flag.
New locked objects do not take in a variable name.
Single threaded Waldo objects had not been inheriting from WaldoObj.
A lot of code relied on using isinstance to distinguish Waldo
variables from basic python variables.  This meant that single
threaded waldo objects were being incorrectly handled as Waldo
objects.  First, changed inheritance tree so that singlethreaded
variables inherit from waldoobj.  Then, added a de_waldoify method to
objects so that they can be converted back to python objects.
Emitter now no longer emits variable names as parts of constructors
for objects.  (The names are no longer needed.)  Lists and maps now
take default initial values to simplify emitting.
Added classes for external value variables.
Updating context to handle new locked variables.
Initializing maps and lists with waldo locked elements.
Pushed dewaldoify into base classes and ultimately data wrappers.
They convert variables from Waldo objects back into Python objects.
Forgot to add list base class to project.
Refactoring code: for maps to correctly be reference types, wrapping
internal maps with a Waldo variable.
Changed container tests to get val for internal maps/lists so that maps/lists work as references.
Using set val, had been double-wrapping values as waldo locked
objects.  This commit takes care of this.
Because I was not copying the list over in reference type data
wrapper, I ran into the problem of the dirty and authoritative copy of
a variable pointing to the same value.  This meant that writes on the
dirty value would poison the clean value.