Add a structure for searching strings.

The tvm_tree structure is a binary search tree. It will be used to hold
preprocessor defines, and variable names for when defining bytes, words,
and double words is implemented.

Each node structure and its own string are stored contiguously (in that
order) so the free's are easier to keep track of, and memory doesn't need to
be a concern when adding a string to the tree.
Enable keeping track of associated values.

The tvm_tree structure should optionally be able to keep track of values
associated with the strings by which its nodes are sorted. In the case of
defines, this is the replacement string. In the case of variables, this
will be a pointer to the variable's location in memory.

Searching should return the value, or NULL.

To opt out of storing a value, pass NULL and 0 as the val and len arguments.
Fix naming conflict.
Implement preprocessor defines.

This commit adds behavior to the preprocessor which fills a tree with
defines and their replacements. In future commits, the parser will
substitute instances of the defines with their replacements in the
source code.
Substitute defines with their strings.

Before allocating space for a token, the lexer will first check to see
if that token is a defined name. If it is, it will allocate space for
the defined string instead.

A test file is included in programs/tinyvm/preprocessor to demonstrate
the behavior. When functioning, the program will print the fibonacci
sequence.
Free the defines memory earlier.

There is no need to keep this memory for the life of the program.
Warn on redefining.
Allow the preprocessor to abort.

If the preprocessor encounters a problem, such as failing to load a source
file or an improperly formatted define, it should be able to abort running
the program.
Remove all traces of the tvm_tree structure.

It is to be replaced with a htab hash table.
Implement defines using the htab structure.

The htab_structure has been modified in two ways, which should not break
compatability with any of its uses.

It includes a void pointer, which is in this commit used to point to a
string for defines, and will in the future be used to point to the address
space for words, bytes, and double words.

It now includes a function htab_add_str specifically for storing strings.
It calls htab_add so as not to be redundant, but makes the node's value
their index for the lexer to fetch using htab_find, and assigns their
void pointer.

The lexer will now use htab_find on all tokens to see if they are a define
string, and if so, substitute them with the appropriate token.

The defines htab is destroyed after lexing, because that memory is done.
Add preprocessor directives to the SYNTAX file.

The preprocessor section of the SYNTAX file has been rewritten to match
the other sections in style, and include both %include and %define
directives. #27
Make sure strings are moved into the rehash.
Add a new function to return strings from htab.

The htab_find_str function eliminates the assumption that the string
is in the first place in the bucket.
Do not write a value for strings in htab.

The assignment is unnecessary, and was overwriting the first element in the bucket (not the added string's value) in the case of a collision.
Remove assumption that node is in the bottom of the bucket.

This is the last remaining instance of this assumption.
Merge pull request #27 from PaytonTurnage/master

Implementation for Preprocessor Defines