Assorted smart pointers for Rust.

Features:

== Rcc ==

This is like Rc<RefCell<T>>, but with slightly different trade-offs:

Maybe something for your next tree with parent pointers?

== ARef ==

ARef takes over where OwningRef ends, by abstracting the owner even further.

This makes it possible to return, say, an ARef<str> and have the caller drop the owner when done looking at it, without having to bother about whether the owner is a String, Rc<String>, a Ref<String>, or something else.

It's also repr(C), so it can be transferred over an FFI boundary (if its target is repr(C), too).

== RMBA ==

The RMBA wraps either a &T, &mut T, Box<T> or Arc<T> within the size of a single pointer.

There are two gotchas here:

== Bx, Bxm ==

These are just simple wrappers around Box that lets you get rid of DerefMove.

This way you can return a Bx in your API and still be sure the inner struct does not move in memory. (This might be helpful if you're dealing with FFI or unsafe code.)