Expand the hash table to be a chained hash table using linked lists

- Doesn't take care of collisions with the exact same key
- Probably not optimized in cases of removing and finding
- Does allow the same hash bucket to be used multiple times but with worse
  performance as times goes on