Assorted changes to numerics, including the addition of floating-point encoding/decoding methods

This is part of the numeric trait reform (see issue #4819).

I have included the following methods to the `Float` trait:

~~~rust
fn encode(sig: Self, exp: int) -> Self;
fn decode(&self) -> (Self, int);
fn significand(&self) -> Self;
fn exponent(&self) -> int;
~~~

The following methods have been removed from the `Real` trait, because they are specific to floating-point numbers and also because their functionality is covered by the methods mentioned above:

~~~rust
fn ldexp(&self, n: int) -> Self;
fn log_radix(&self) -> Self;
fn ilog_radix(&self) -> int;
~~~

The `Integer::divisible_by` method has been renamed to `Integer::is_multiple_of `.