See extended description

1. Using tagged pointers for dynamically objects, so hashtable no longer
needed.
2. White set needs to be populated when objects are allocated, to do
this, object tag also passed to object_alloc().
3.  Bodies of functions and macros were not being correctly printed in
the system browser code panel; fixed.
4. Data objects (i.e. not closures/macros/continuations) are printed in
the code panel without '(define'. They can only be viewed in the panel.
5. Before populating packages list, clear it first.
6. Hash size stored for each hashtable separately
7. Introduced 'an_element' to hashtable (for cases where we need any
valid element -- e.g. process all entries till the table becomes empty).
8. NOT, <, <=, >=, NEQ now special forms for improving performance
9. References to custom BST in memory management removed; experimenting
with hashtables (controlled by GC_USES_HASHTABLES flag in compilation --
not enabled by default; default is red black tree).
10. Facility to track memory deallocated during each operator call as
well (not used currently; in the absence of GC within the expression
computation, no memory is deallocated)
11.