Add a simple intrusive doubly linked list class. This is not super critical, but is simple enough and comes in handy - it avoids an allocation and allows an object to be removed from the list with just the pointer to that object rather than an iterator.