add pointer-based match in list_find
add two macro list_get_first and list_get_last
add doubly-linked list implementation