Also update cur->next->previous when unlinking items from list.

This was causing memory corruption errors when running the nonblocking /
multithreaded example code - the error didn't require threads to occur,
running 4 threads with 16 concurrent requests each made the failure case
significantly easier to reproduce.

There doesn't appear to be any value in having a doubly linked list, so
the previous pointers should probably be eliminated in another commit.