More accurate spans
Fix span tests
auto merge of #6208 : sanxiyn/rust/accurate-span, r=sanxiyn
Move FuzzyEq trait into core::cmp and rename it to 'ApproxEq'
Add assert_approx_eq! macro
Fix cross-crate packed structs
auto merge of #6263 : bjz/rust/approx-eq, r=erickt

Moving the trait into `core` allows it to be added to the `num::Float` trait.

I have also added and `assert_approx_eq!` macro. This is useful fo making approximate assertions on types that implement the `ApproxEq` trait.

Examples:

~~~rust
// using the default epsilon value
assert_approx_eq!(1.0000001f, 1.0f);

// using a custom epsilon value
assert_approx_eq!(1.000001f, 1.0f, 1.0e-5);

// fails with: "left: 1.00001 does not approximately equal right: 1"
assert_approx_eq!(1.00001f, 1.0f);
~~~
auto merge of #6265 : sanxiyn/rust/xc-packed, r=nikomatsakis
add task-local reference counted smart pointers

To provide a reference counted pointer type with deterministic
destruction once managed boxes are switched over to a garbage
collector. Unlike managed boxes, these can be moved instead of just
copied/cloned which is helpful for avoiding reference counts.