Fixes bug 12999: insert performing excess allocations

Adds __hash_table::__node_unique_index() for determining the address an object
will be inserted at, and an overloaded __hash_table::__node_insert_unique() that
takes an iterator argument.

__hash_table::__insert_unique() now uses this approach rather than allocating
the object before discovering that it is needed.