Hash_diff for symbols

This is a refactored hash_diff that can handle symbols, hashes and arrays.  Includes tests