zdir now resistant to all file types

A directory full of symlink caused a zlist full of NULL. When the comparison
hook was called, no check was performed on the pointer's validity. Now it
doesn't segfault.
zlist now doesn't accept NULL items.

NULL seems to have a special meaning (e.g. end of list), so it is useless
and misleading to store it.
Problem: signal handling was broken

Ctrl-C handler wasn't being properly installed. This patch fixes
that.

Fixes #485.