Fix recently introduced bugs in scav_vector()
* It is totally wrong to call scavenge() on a hashtable instance,
because scavenge() treats all words as either immediates or pointers.
A hashtable has a raw single-float slot which will be skipped only by
scav_instance. It's easy to see that some legal rehash thresholds
cause is_lisp_pointer() to return true, such as 0.
93750066 = #x3F70000B
which resembles a fun-pointer on a 32-bit little-endian machine.
This should have resulted in GC lossage, but amazingly the default
rehash-threshold of 1.0 (= #x3F800000) either resembles an innocuous
fixnum (little-endian), or doesn't point to a Lisp space (big-endian).
* In the "Warning: no pointer at %p in hash table ..." situation,
the slack would not have been picked up correctly by heap_scavenge(),
as it can not align to the next object after an odd number of words.