fixed the miscalculation of the table size

we are storing volatile_object_t structures in the hashtable so the size returned by ht_delete
is for such structure and it's not the actual data size. We need to get a pointer to the actual
structure and use the dlen member (which instead holds the size for the actual data)
ensure releasing the previous item when providing a pointer to get the previous value on ht_delete() and ht_get_and_set() calls

in such cases (as stated in the documentation), the hashtable implementation won't call
 the free callback but the caller becomes responsible of releasing the memory for the previously stored data