a generic Doubly-Linked List in C using void pointers