Changed bignum_to_double to produce a correctly rounded result. The
code is a lot hairier since it implements IEEE style round to even,
but it is not much slower than the old `accumulate' loop since it
rarely has to look at more that two or three words.
The new version no longer signals an floating point overflow error on
(INTEGER->FLONUM (- (EXPT 2 1024) 1) #b10)
This means that (INTEGER->FLONUM N #b10) can again be used for computing
EXACT->INEXACT on exact integers, which should be 5-15x faster.
There were several places which has a loop to find the bit position of
the most significant bit in a word. This code has been converted into
a macro, and tweaked to be a bit faster. Presumably some machines
have this operation as an instruction.