Fix precision problem.

BigDecimal(BigInt(2).pow(n)) will be sure to preserve all
digits, whereas BigDecimal(2).pow(n) will lose digits for
large n.

This is something that worked in 2.10, but will fail in 2.11
so we might as well change it now.
Clean up implicit ops classes.

This commit does a few things:

  1. Annotate all method return types
  2. Fix some counter-intuitive BigInt/Natural behavior
  3. Use slightly faster/clearer cfor loops
  4. Make the CC[A]/Array[A] conversions a bit more robust