The previous code only created files with 'pdos'/'pXYZ' attributes,
and didn't correctly recognize specific types like 'pdos'/'TEXT'.
The code should now perform the conversions according to the spec,
though it still doesn't handle the 'pdos'/'XY ' case.
When GSHK adds files to an archive, it doesn't create threads for
zero-length data and resource forks. NufxLib had a workaround
for this, but it wasn't handling all possible cases. We now
fully handle "Miranda threads" (if you cannot afford a thread,
one will be provided for you).
This broke test-basic, because a callback gets called one extra
time now due to the additional thread. It also broke test-twirl,
which uses "mask dataless" and is sensitive to the order in which
threads appear. (test-twirl actually works just fine, but the
CRC check is too simple-minded, and is arguably incorrect.)
Since this can apparently break things, I'm making this a minor
version bump, to 3.1.0-a1.
I also tweaked the NuLib2 file listing to test for the extended
file storage type, rather than simply scanning for data threads.
Forked files are now listed as such, even when they're missing
the actual resource fork data thread.
Eliminated the two inline functions. Support for function inlining
in plain C is a bit uneven. The CRC calculation is now a macro,
and the thread get-by-index is a plain function.