Implemented optimizations

Code taken from http://aggregate.org/MAGIC/#Most%20Significant%201%20Bit
Moved not prime methods to NumericHelper
removed unnecessary whitespace
Added TrailingZeroCount
Added LeadingZeroCount
Implemented cast BigInteger to Double

Implemented cast BigInteger to Double
Note 1: This was a mono FIXME
Note 2: We are back to the off by one rounding error in doubles
Added overload of GetParts for long
Added BinaryReverse and LeadingZeroes

TrailingZeroes is now implemented with BinaryReverse and LeadingZeroes
massive code style clean up
BuildDouble optimization
Added check for early overflow
BuildDouble optimization

The off by one problem is not fixed, I suspect it is not a fault on my
code but on the CPU... I need more testing.