if key is ptr, use the pointer value to generate hash code
re-design hash function
re-design hash function
remove the code exploiting internal details of the golang implementation for following Golang compatibility guidelines
finish hash function re-design
improve the preformance for simple type
add test case for composite Struct
return error if type of key is non support
add test case for Hasher interface

if key implements Hasher interface, then will use Hasher.Equals(v2
interface{}) method to check if key equals
Add update method
1. update Iterator 2. add ToSlice method
update test case
update test case
Merge branch 'develop'