More encoding negative zero

I discovered that the last change alone did not work correctly on CCL:

```lisp
(decode-float32 (encode-float32 -0s0)) ;; => -0.5 ?!
```

Apparently, `DECODE-FLOAT` can return *any* value for the exponent when the float is zero; in this case I simply preserve the exponent, because it appears the sign is the most important factor.  This causes it to work identically in SBCL and CCL.