Use VarTree instead of a DynArray of VarVal

Add a copyTree function to tree.c since it is needed.
Add functions to iterate over the tree incrementing refcounts or
  freeing Values.
Make array.o and list.o into a shared object

Since the main interpreter doesn't need the DynArray library at all
  anymore but the linked list allocator does, it makes sense to only
  include the dynamic array as part of a package with the linked list
I could have made them into a static library, but it was easier to
  write a Makefile that made them into a dynamic library.