The compare_values and hash_values functions do not compare an
entire value. Rather, they compare only the short string prefix
of long string values. I have a feeling that this misnaming was
confusing people (it certainly confused me) so this commit renames
them.
It also adds a new function value_compare_3way() that does what
one what expect such a function to do.