Prototype Dlist rewrite with cursor

Curses! Someone noticed! :P 

I think you're right but there's kind of a tension between effeciency/flexibility/symmetry here. Either you need to maintain mutliple ptrs (as your design did, iirc), or you need to make certain directions of iteration/mutation faster. And _next/_prev also complicates the API.

The current design is actually, really optimized for `prev` iteration, weirdly. This has to do with the fact that `prev` owns next. In theory, if we flipped this we could optimize for `next`.