[Performance] BigInteger: cast to double and float

- The new implementation converts to double or float directly.
- There is room for optimization - hopefully by avoiding Math.Pow.
- New helper method LeadingZeroCount that returns the number of bits
that are set to 0 at the start of an uint.