Make death queue be actually a queue

This removes the -- wrong -- ring buffer implementation and substitute
that with a doubly-linked list. In order to save memory, instead of
next/prev pointers, int indices to the connection array is used; this
fits nicely into the hole that has been recently opened in the
connection structure.

Now, every time the time_to_die is updated, the connection is pushed to
the end of the queue. This way, _death_queue_kill_waiting() will work
as it was intended to.

Also, connections are now automatically removed from the death queue
when their respective coroutine is destroyed.

Closes #55.