Add append_mut() and split_off() to DList as per coll. reform.

Implements the `append()` and `split_off()` methods proposed by the collections reform part 2 RFC. Named it `append_mut()` instead, because there's a pre-existing `append()` method.

RFC: https://github.com/rust-lang/rfcs/pull/509
Tracking issue: https://github.com/rust-lang/rust/issues/19986
Can you clarify the value of the `-1`? Strict correctness for "closest"?