Update: Add directory functions, re-design fl_directory_do().
Add several directory functions.
I still may need to add more, such as a rewind to handle rewinddir().
Change the directory recurse do flags from an enumeration to defines.
Add a type fo handling `DIR *` called `f_directory_stream_t`.
Get rid of the directory listing structure to reduce memory usage.
This is only possible by replacing the `scandir()` with custom direct processing.
This change reduces the number of looping and removes the sorting behavior.
The directory recurse do flags are now redesigned.
The `top` is now entirely removed because a depth of 0 can be used to test for top without needing a flag.
The `opendir()` still has a notable cost, especially during recursion.
I need to do more research into how to more efficiently call `opendir()` without consuming too much memory.
The documentation comments still needs to be reviewed following these changes.
Make sure the directory functions only update the id values if there is no error.
Explicitly check for `-1` as return error rather than `< 0` to be more consistent with the standards.
Use typedefs to define callbacks.
Tweak the `fl_directory_list()` design.
Tweak the `fl_directory_path_pop()` design.