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 +.
auto merge of #7123 : huonw/rust/more-str, r=Aatch

Moves all the remaining functions that could reasonably be methods to be methods, except for some FFI ones (which I believe @erickt is working on, possibly) and `each_split_within`, since I'm not really sure the details of it (I believe @kimundi wrote the current implementation, so maybe he could convert it to an external iterator method on `StrSlice`, e.g. `word_wrap_iter(&self) -> WordWrapIterator<'self>`, where `WordWrapIterator` impls `Iterator<&'self str>`. It probably won't be too hard, since it's already a state machine.)

This also cleans up the comparison impls for the string types, except I'm not sure how the lang items `eq_str` and `eq_str_uniq` need to be handled, so they (`eq_slice` and `eq`) remain stand-alone functions.