io: improve recursive_directory_walk
* Add optional throttle Semaphore pointer to limit the number of spawned fn as well as directory walk fibers * Use const references to the passed functions instead of values * fsearch: Use max_running as fn and recursion throttle