Environment indirection, Allocator separation
A level of indirection was added to the environment so that references could be well supported.
To make it work, several accessors or setters were added and the allocating
primitives (callable from a let rec) were separated from the other primitives.

Also, data printing is now specified in a separate file.