fix HashWithIndifferentAccess#to_hash behaviour

Currently `HashWithIndifferentAccess#to_hash` ,returns a hash containing HashWithIndifferentAccess within for a nested hash, eg

if 
`{:a => {:b => {:c => '3'}}}` is a HashWithIndifferentAccess
then #to_hash returns 

`{:a => {:b => {:c => '3'}}}`
where {:b => {:c => '3'}} is a `HashWithIndifferentAccess` object, while the whole object itself is a `Hash`