finished up and tested obarray implementation, seems good, but I need to
test it in practice.

I ended up having to fix some stuff, mostly to do with rehashing. I
needed to be more careful about the values of the next and previous
pointers, because I ended up in infinite loops because of cyclic
lists. I also needed to explictly zero the newly allocated memory after
reallocing the obarray. I also wrote the begingsing of a quick program
to write the global symbol table to file but I need to figure out how to
get everything in a contigous block of memory that I can wwrite and read
eaisly before that.

Also I wrote macros/elisp code to generate obarray entries for all my
primitives, which I can do from a function now, so yay for that.