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
You can just do `self.list_head = other.list_head.take()`