make util::NonCopyable a unit struct instead of a struct with a unit
remove bitrotted cant_nest field from RWARC (the #[mutable] tag suffices)
Document unstable::atomics fetch_* return values
Thread order_lock through rwlock condvars for reacquiring access_lock. Fixes #7065.
Add a test case for #7065.
Change sync::RWlock implementation to use atomic uint instead of exclusive, for performance. Close #7066.
Improve comments in sync and arc a bit more.
auto merge of #7109 : bblum/rust/rwlocks, r=brson

r? @brson

links to issues: #7065 the race that's fixed; #7066 the perf improvement I added. There are also some minor cleanup commits here.

To measure the performance improvement from replacing the exclusive with an atomic uint, I edited the ```msgsend-ring-rw-arcs``` bench test to do a ```write_downgrade``` instead of just a ```write```, so that it stressed the code paths that accessed ```read_count```. (At first I was still using ```write``` and saw no performance difference whatsoever, whoooops.)

The bench test measures how long it takes to send 1,000,000 messages by using rwarcs to emulate pipes. I also measured the performance difference imposed by the fix to the ```access_lock``` race (which involves taking an extra semaphore in the ```cond.wait()``` path). The net result is that fixing the race imposes a 4% to 5% slowdown, but doing the atomic uint optimization gives a 6% to 8% speedup.

Note that this speedup will be most visible in read- or downgrade-heavy workloads. If an RWARC's only users are writers, the optimization doesn't matter. All the same, I think this more than justifies the extra complexity I mentioned in #7066.

The raw numbers are:
```
with xadd read count
        before write_cond fix
                4.18 to 4.26 us/message
        with write_cond fix
                4.35 to 4.39 us/message
                
with exclusive read count
        before write_cond fix
                4.41 to 4.47 us/message
        with write_cond fix
                4.65 to 4.76 us/message
```
auto merge of #7130 : huonw/rust/rustdoc-highlight, r=thestinger

This means that type definitions and function signatures have
pretty colours.
std: convert str::{map,levdistance,subslice_offset} to methods.

The first two become map_chars and lev_distance. Also, remove a few
allocations in rustdoc.
std: convert str::to_utf16 to a method.
std: simplify the string comparison implementations, using iterators.
std: continue improving the comparison trait impls for str.

This moves them all into the traits submodule, and delegates Ord
to the TotalOrd instance. It also deletes the stand-alone lt, gt,
ge and le functions.
std: test-fixes, remove warnings, syntax highlighting for code examples.
std: allow any sort of string to be Added with +.