Improve debugging: use assert and compile with -g
Use linked list for filetree traversal

Use LL-queue for traversing the input filetree instead of ftw.h.
Rename unique file struct to ufile
Rename struct in_file to struct file
Init and destroy options
Report which ufile is in tree when adding ufiles

If the ufile is added to tree return pointer to it. If there already
exists the same ufile, return pointer to that existing one and don't add
a new one.

Update main logic use this feature.
Reorder functions