Since forking isn't an option in Rust (and is generally unsafe, incompatible with threads, and more or less not UNIX's best design idea) we instead grab the current binary path and run it again with a different subcommand.
This should allow us to grab all the panics, including uncatchable ones.
Note: this also requires that we introduce an IPC mechanism. I currently decided to have it spit out CSV rows, same as the main `scan` command. This also makes the psuedo-fork subcommand arguably useful on it's own as it will dump timing metrics for each step.
This relies on a proposed serial bridge as per https://github.com/rayon-rs/rayon/issues/858. As that project is licensed the same as Ruffle itself and the submitter intended it to be included in Rayon, I believe it's legal to copy this code.
Rayon's default of 2MB is about half of what the AVM1 recursion limit requires, and I have plenty of memory, so I might as well add some padding for long runs.
This currently fails to scan the entire Flashpoint `localflash` directory because Rust considers stack overflow to be an immediate program termination, no ifs, ands, or buts about it.