rt: pull upstream ISAAC code for consistency between 32/64 bit platforms

The "unsigned 4 byte" `ub4`s are actually 8 bytes on 64-bit platforms
which mean that some bits > 2**32 were retained in calculations, these
would then "reappear" after a shift and so the stream of random numbers
would differ on 32 bit vs 64 bit platforms.
Made fail! and assert! accept both &'static str and ~str, as well as a fmt! like format list.

Unwinding through macros now happens as a call to the trait function `FailWithCause::fail_with()`, which consumes self, allowing to use a more generic failure object in the future.
implement Ord, TotalEq and TotalOrd for char

Closes #6063
Add is_zero method to Zero
Allow customization of indent offset
Use `///` doc-comment form instead of `/** */`
Minor style improvements for test functions

Use argument pattern-matching for test_division_rule and remove visibility specifier for test_signed
Add Bitwise, Bounded, Primitive, and PrimitiveInt traits
Add Int, Uint and Float traits for primitive numbers
Add BitCount trait
Fix failing test
Added test cases for all fail message formats
Offer a hint on some unresolved imports

I didn't know how to use "use" initially, and an error message like this would
have solved quite a bit of frustration. I think this properly handles cases
where it's not appropriate but I'm not sure.
add comment
Combine PrimitiveInt, Int, and Uint traits into one single trait

Having three traits for primitive ints/uints seemed rather excessive. If users wish to specify between them they can simply combine Int with either the Signed and Unsigned traits. For example: fn foo<T: Int + Signed>() { … }
Fix typo
rt: use the [u]int[nn]_t types in the RNG.

This means that `ub4`s are always 4 bytes, rather than being 8 bytes on
x64. (Suggested but not implemented by upstream: "Porting it to a 64-bit
machine [...] may just need an adjustment of the definition of ub4")
Add Orderable trait

This is a temporary trait until we have default methods. We don't want to encumber all implementors of Ord by requiring them to implement these functions, but at the same time we want to be able to take advantage of the speed of the specific numeric functions (like the `fmin` and `fmax` intrinsics).
Add mul_add and next_after methods to Float
tutorial: rework the section on destructors

This removes the comparison to manual memory management examples,
because it requires too much existing knowledge. Implementing custom
destructors can be covered in the FFI tutorial, where `unsafe` is
already well explained.