use void * for hash key, add compare function to be user specified, add some unicode tests