Clean up exceptions and docs in Complex.
Small Natural refactor for clarity
Disallow Double's sentinel values in Number.
Implement better log() and exp() for BigDecimal.

This also improves the performance of pow() and fpow() for BigDecimal.
While this code is still not perfect I think it's totally acceptable
for now and very close to being good.

The big issue is that in some cases the last digit or two of something
like exp(3) will be wrong. This is due to accumulated rounding error,
and the only way I know how to "fix" it would be to pessimistically
track possible rounding error and restart with more precision if the
error looks like it could affect the result.
bump scala and sbt versions