+ use NULL instead of a sentinal node in skiplist and list
- make interfaces for all data structures consistent
+ make list and skiplist use string keys
-- optimize short strings by embedding the data directly in their pointers
++ optimize integer keys
+- sl_free() ll_free() ht_print()