Now callbacks can stop further enumeration and report errors, if they had a
catastrophic issue or just found what they needed and don't need to process
any more items.
Also, the actual enumerators can report errors instead of silently dropping
items. This led to several other fixes as all these implementations got
audited and reworked.
The original, non-callback enumerator now returns NULL if it can't produce a
complete list instead of dropping items and returning a partial list.
So now you can drop this into your program and not worry about filename
conflicts, or where "platform_unix.c" came from in the debugger, etc.
Also renamed the "beos" sources to "haiku" and "macosx" to "macos" to match
modern platform names.