Added missing include for memcmp
Fixed "previously declared as a class" warning

This patch specializes std::hash<> as class rather than as struct to avoid a
compiler warning about mismatched tags.