Prototype Dlist rewrite with cursor

I think the primary use case for a `Cursor` trait is for implementing convenience methods, but that might be covered by just making concrete Cursors specialized implementations of a `StreamingIterator` which would contain all the convenience methods.

But, you know me, I like me my crazy traits.