Fix FastComplex encoding when imaginary bits are negative
Fix encoding/decoding problems in FastComplex.

This expands on the work that Lukas Rytz did. There was
was another error (signed shift instead of unsigned),
and decoding code was simplified while remaining correct.