
This is used for dumping the symbol table to a file and then
subsequently resurrecting it again. Can be used for sending the symtab
to another process or for persistence.
The symbol table dumps all of its associations to the file in the form
<name> <value>

A value looks as follows:

<START> <type> <val> <END>

It is enclosed in <START> and <END> delimiters.

The first symbol is an integer which denotes the type. All types are
defined in globals.h.

The next symbol is the value itself. Each value knows how to dump
itself to a stream and how to read itself in from the stream again.



Literal:
--------

<START> UNDEFINED <END>

UndefinedLiteral:
-----------------

Same as Literal


NilVal:
-------

<START> NILVAL_TYPE  <END>

Boolean:
--------

<START> BOOL_TYPE true <END>


Int:
----

<START> INT_TYPE 23.34 <END>

Str:
----

<START> STRING_TYPE "Hello Bela" <END>



User-defined types:
-------------------

Here, the first symbol after the NATIVE_INST_TYPE is the name of the
class. When read, the classname can be used to find the corresponding
ClassDef (metaclass): ::classes->Find(classname). The ClassDef can
then be used to create an instance: cldef->CreateInstance(). The
method Dump of the instance can then be called !
This is a flexible way of letting users add new classes and integrate
them into the streaming framework. Each class has to be (indirectly
derived from Literal and override methods Dump and Read.


NativeList:
-----------

<START> NATIVE_INST_TYPE List <START> <START><val><END> 
	                              <START><val><END> 
				      ... 
			      <END>  
<END>

NativeStruct:
-------------

<START> NATIVE_INST_TYPE Struct <START> 
				       <name> <START><val><END>  
	                               <name> <START><val><END>
				       ...
				<END> 
<END>

NativeUnion:

<START> NATIVE_INST_TYPE Union <START> 
	                          <name> <START><val><END>  
			       <END> 
<END>




