Add some optimized conversions

`::Uint16*::Ufixed14` first converts everything to `Float64` (probably we should switch to `Float32`), which for the `Ufixed14` involves one multiplication. Then it does a second multiplication. So theoretically this implementation can save one multiplication.

When I tested by `code_llvm` before submitting this, I indeed saw that happen. But strangely, I can't reproduce that now---it actually looks much worse. I have no clue what's going on.