Adding list contains helper
Updating list/tree manipulation function names to C++ish

I.e. push_back, push_front, pop_back, pop_front, back, front
Last refactor of list, I swear. Except for more test coverage.
Adding tests for hasht (surprise, they fail)
Adding test-hasht to build
Implementing basic dynamically-allocated hash table

Interface is satisfied. Hash function is a major work in progress. Would
love to dynamically expand the table size as utilization
increases. Collisions are handled via open-addressing per CLRS.
Refactoring so list and tree use self->compare/delete idiom like hash

Rather than having to pass compare/delete specific functions on each
use, assign when creating the data structure, with NULL pointers
resulting in sensible defaults. Much easier to use and cleaner to look
at.

Renamed internal free functions to delete to avoid type name collision
with std free.

Also removed list_contains() helper and made list_search() return NULL
if it the search failed. The list_end() check for sentinel here was then
made redundant. (list_end() is great for iteration, not so good for
checking if something succeeded.).

Renamed destroy_syntax_tree to delete_tree. Moved syntax tree utilities
to parser.
Adding C++ use of struct to pass/test.c

Figured out why this was failing with a syntax error before. In C++,
struct should *not* preceed the type name. Technically, having the
prefix should work in C++, but no pressing need to fix.
Adding test-hasht to gitignore