Prototype Dlist rewrite with cursor

The more I think about it, a trait might not be the best idea for cursors. Being generic over them isn't as clearly super-useful for them as it is for iterators. But maybe I'm just not being imaginative enough.