Add some goto's for error handling
Rename list function and simplify condition
Clean checks and calls

Escape was called even if there was nothing to do for it, time wasted.
Remove a condition that would never happen.
Move a check

We checked that the variable was not null after we used it for the first time.
A very very stupid mistake...
Add str_compare, hand rolled strcmp

It appears that it's quicker than strcmp, since I'm having fun trying to squeeze
some perfs here, it's worth a try.
Merge is_valid_ext and get_ext function

Also add str_compare to header files.
Check file extension before build_path_from_tag

Instead of checking the validity of a file extension after calling the function,
        do it before.
Avoiding the call when it's not needed.
Rework get_ext to use pointer arithmetic
Rework build_path_from_tag and append_tag

Remove a while used to go to the end of the linked list by using pointers.
Switch from -O0 to -O3
Delete old test results
Fix error if file has no extension
Fix a file left after test
Add optim_test script