extra::treemap: add mutable-value iterators.
extra::treemap: remove mutate_values, replaced by .mut_iter().
extra::treemap: share code between the mutable and immutable iterators.

Yay for macros.
auto merge of #11321 : huonw/rust/treemap-mut, r=alexcrichton

This requires a single `*mut` pointer to implement; I've justified its existence & correctness in the code.

Also, converts the mutable and immutable iterators to share code with some macro ~~madness~~ manipulation.