Make remove_dir_if_exists recursive to handle prefix subdirectories
When no build_files_prefix is set, startup cleanup removes the entire
build_files/ tree. The previous Sys.remove call fails on subdirectory
entries left by prefixed test runs. Recurse into subdirectories before
removing them.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>