Keep track of nodes with a hash table for O(1) access.

This allows the data structure to not have to return a
pointer to the entry, freeing the user from keeping track
of it.