Implements a hashtable using a linked list. When a hashtable is created, its initial size, maximum load factor, and (optionally) maximum chain length are specified.  The hashtable can hold arbitrarily many items and resizes itself whenever it reaches its maximum load factor or whenever it reaches its maximum chain length (if a maximum chain length has been specified).