Generic Double Linked List

This data type is manually implemented instead of using the list
datatype in the STL.  The manual implementation can be useful for
expanding the datatype if wanted.