Simplified the language

Now there are only two types of definitions:
Type definitions and Function definitions

Each is an alias to one of two types of values:
a string (assumed to be a Haskell type/function definition, but not necessarily so)
or a hash (e.g, #a56de90ac) of an existing type/function definition