Prototype Dlist rewrite with cursor

Yeah, totally. Still safer than std::DList (can't promote &DList to &mut DList), but not Safe. Littering everything with `unsafe` is super shitty, though, and I don't see any reasonable way to make DList safe. :(