Prototype Dlist rewrite with cursor

Eh, getting a cursor_back amounts to calling `prev` once since it's circular. Roughly as much work as calling `rev` with an iterator except for needing to store the value. The problem I see with this is that cursors have a more significant notion of "position". e.g. if you want go full `rev` flipping insert/remove would be weird.

Could definitely have a convenience for calling `prev` once, but I'd like to leave this part minimal atm.