Lots of work done, and a big bug found

Added Environment module; contains type for storing bindings in an
environment, looking up bindings, etc.

Added Eval module; contains the beginings of an evaluator which can
eval within the context of a particular Env.

Added Global module; contains the definition of the global Env which
is loaded by default.

Added Intrinsics module; defines values stored in the globalEnv (for
example, addl is used by `+' to define addition).

Modified Forms module; added a Function type to the Form type.

Found a bug: agProcess "hello there you" maps properly to FunctionCall
{func=hello, args=[there you]}, however "+ 3 5" maps to FunctionCall
{func=3, args=[5]}.  The problem disappears when it is replaced with
"+ foo 5", however: we then get FunctionCall {func=+, args={foo, 5}}
as expected.  Something is therefore wrong when we encounter Numbers
-- it throws away the head of the list!!  Wtf!