Extensive refactoring, especially to hier test.

A bunch of changes were made (probably too many for one commit):

*Revamped the hierarchical test code so be more readable. Also got
rid of many of the calls to get_key_from_vector which are really
expensive with large vocabularies.

*Revamped all the tests so that every time we make a jump, we do it
by calling testLink with the correct parameters, and it is
responsible for collecting the correct data. This was, our data
collection is more consistent.

*Revamped data collection. Now the associativeMemoryTester object
just has a dictionary called data (strings to lists), and when we
want to add something to a certain list in that dictionary, we just
call member funciton add_data. This is much more streamlined than
the old scheme of passing the data containers in as extra keyword
arguments with every call.

*Made sure the non-neural Associative Memory works. This will come
in handy for running tests on the tester code since this associator
runs much faster than the neural one.

*Adjusted symbols_definitions to return the correct unidirectional
symbols...before it was mistakenly adding the inverse_isA symbols.

*Added a zeroVec function to VectorOperations.

*Added help descriptions to the argument parser.