Implement Clone trait for mutable unsafe pointers
Allow taking address of bottom
auto merge of #10066 : sanxiyn/rust/mut-ptr-clone, r=thestinger
auto merge of #10067 : sanxiyn/rust/addr-of-bot, r=thestinger

Fix #5500.
Allow fail messages to be caught, and introduce the Any trait

Some code cleanup, sorting of import blocks

Removed std::unstable::UnsafeArc's use of Either

Added run-fail tests for the new FailWithCause impls

Changed future_result and try to return Result<(), ~Any>.

- Internally, there is an enum of possible fail messages passend around.
- In case of linked failure or a string message, the ~Any gets
  lazyly allocated in future_results recv method.
- For that, future result now returns a wrapper around a Port.
- Moved and renamed task::TaskResult into rt::task::UnwindResult
  and made it an internal enum.
- Introduced a replacement typedef `type TaskResult = Result<(), ~Any>`.