Make the JSON load order use BFS (again).

This actually redoes what 55af2d9 was doing, but correctly this time.

It turns out that `if (stat(path, &st) != 0x4)` is the same as `if(true)`, because `stat(3)` can only return 0 or -1. This was coincidentally working before, in spite of the comment assuring us that it would `// Check to see if it is a folder!`.

So, having corrected that failure and reorganized the code a little (it was still managing to recurse because it was using `opendir()` to check for folder-ness), this now *actually* works.

I guess I didn't check it before. Oops.
It's fine, we had the same bug before, too, and never triggered it. Safe to merge, as long as you promise to build and run it first and confirm you're still able to create new worlds and characters.