Fixed HAMT Hash.[] to remove default procs
Fixed HAMT Hash#delete to accept private #hash methods
Fixed HAMT Hash#[] to accept private #hash methods
Fixed HAMT Hash#each_pair to yield an array to a block expecting |*args|
Implemented HAMT Hash#== separately from Hash#eql?
Aliased HAMT Hash#indexes and Hash#indices to Hash#values_at
Fixed HAMT Hash#inspect to taint string when self is non-empty and tainted
Fixed HAMT Hash#reject! to return an Enumerator when called on a frozen instance
Fixed HAMT Hash#select to return an array of entries
Fixed HAMT Hash#select to return an Enumerator if called on a frozen instance
Fixed HAMT Hash#to_a to return a tainted array when self is tainted
Fixed HAMT Hash#to_s to use Hash#to_a
Fixed HAMT Hash.[] conversion of arguments that respond to #to_ary
Fixed HAMT Hash#delete_if to return an Enumerator when called on a frozen instance
Added key_hash attribute to HAMT Item.

This removes the need for additional key.hash calls in the HAMT
implementation, and also allows specs that were previously failing due
to Mock.verify_count (on key.hash calls) to pass.
Fixed HAMT State#match? to check for hash and object or value equality.

This also allows HAMT Hash to find a value via an identical key even
when #eql? is not reflexive
Fixed HAMT Hash#merge! to use and delegate frozen check to Hash#[]=