Improved FixedPoint type class instances.

This commit adds sqrt/nroot/fpow to FixedPoint, and also cleans
up the existing type class instances.
use native compare/signum where possible
Remove branch in unsigned signum implementations.

This does rely on the fact that the Java native signum
implementations will always return -1, 0, or 1. Since
our numbers are unsigned, we can use:

  signum(x) & 1

to change -1 into 1 (but preserving 0).