Attempt to fix x86 only strconv test failure
inline the primitive numeric operations
auto merge of #6028 : Kimundi/rust/strconv-test-fixup, r=brson

r? @brson 

Can't test atm, but it probably failed because of 32bit float precision loss of the float literal.
auto merge of #6034 : thestinger/rust/num, r=catamorphism,pcwalton
Fix issue #5976 - HANDLE leaks and undefined/bad behavour
on windows.
Remove os::waitpid because:
 - The return value meant different things on different
   platforms (on windows, it was the exit code, on unix it was
   the status information returned from waitpid).
 - It was undocumented.
 - There also exists run::waitpid, which does much the same
   thing but has a more consistent return value and also some
   documentation.
Oops, the should_fail test needs to be ignored on windows.
Cleanup some mistakes made during rebasing/merging.
auto merge of #6010 : Dretch/rust/run-windows, r=brson

This fixes #5976.

It also removes `os::waitpid` in favour of (the existing) `run::waitpid`. I included this change because I figured it is kind of related.

r?
Improve the unused unsafe block warning to include unsafe blocks in unsafe functions
Removing more unnecessary unsafe blocks throughout
Fixing some various warnings about unused imports
auto merge of #6038 : alexcrichton/rust/more-unsafe, r=pcwalton

Because unsafe functions are never warned about, then all `unsafe` blocks in unsafe functions should definitely be warned about (no need to be redundant). This fixes this case, adds tests, cleans up remaining cases, and then fixes a few other import warnings being spit out.
Implement Signed and Unsigned traits and remove related predicate functions
Implement Natural trait

This adds the following methods to ints and uints:

- div
- modulo
- div_mod
- quot_rem
- gcd
- lcm
- divisible_by
- is_even
- is_odd

I have not implemented Natural for BigInt and BigUInt because they're a little over my head.
Improve divide-by-zero error messages
auto merge of #6041 : bjz/rust/numeric-traits, r=brson

As part of the numeric trait reform (see issue #4819), I have added the following traits to `core::num` and implemented them for the appropriate types:

~~~rust
pub trait Signed: Num
                + Neg<Self> {
    fn abs(&self) -> Self;
    fn signum(&self) -> Self;
    fn is_positive(&self) -> bool;
    fn is_negative(&self) -> bool;
}

pub trait Unsigned: Num {}

pub trait Natural: Num
                 + Ord
                 + Quot<Self,Self>
                 + Rem<Self,Self> {
    fn div(&self, other: Self) -> Self;
    fn modulo(&self, other: Self) -> Self;
    fn div_mod(&self, other: Self) -> (Self,Self);
    fn quot_rem(&self, other: Self) -> (Self,Self);

    fn gcd(&self, other: Self) -> Self;
    fn lcm(&self, other: Self) -> Self;
    fn divisible_by(&self, other: Self) -> bool;
    fn is_even(&self) -> bool;
    fn is_odd(&self) -> bool;
}
~~~

I have not implemented `Natural` for `BigInt` and `BigUInt` because they're a little over my head. Help with this would be most appreciated.
libcore: remove @Rng from rand, and use traits instead.

Also, rename RandRes -> IsaacRng, and make the constructors static
methods.
libcore: convert the Program @-object to be a plain struct + impl.

Removes the dynamic @ indirection, and also converts the functions acting
on `ProgRepr`s to methods.
libcore: unify `gen_<type>` methods on `rand::RngUtil` into the generic `gen`.

This moves all the basic random value generation into the Rand instances for
each type and then removes the `gen_int`, `gen_char` (etc) methods on RngUtil,
leaving only the generic `gen` and the more specialised methods.

Also, removes some imports that are redundant due to a `use core::prelude::*`
statement.