win32_utf8: Add DeleteFile().
Add runconfig_title_get().
Sort exported functions alphabetically in order of their source files.

Gosh, this was *so* aggravating.
Don't export detours.

With detour chaining, this practice is not exactly conducive to good style.
Directly initialize plug-in modules after loading their DLL.

The first step to a saner init system. This guarantees that every core module (especially strings) is available when DLLs initialize their modules.

This also makes obvious that the separate "detour" function has become meaningless with detour chaining. I'll keep it around for now since it might ease DOS porting to keep the functionality separate.
Don't expose the plugin list in the run configuration.
Move update notifications for thcrap and the game itself to thcrap_update.
Add a wrapper macro for the typical Win32 return value pattern.

Yeah, it also took me a while to wrap my head around the concept of returning zero (= 1 value) for success and nonzero (= many values) for failure.
json_object_get_create(): Fail if the containing object is NULL.

... because json_object_set_new() dereferences the new value if the containing object doesn't exist, thus making the function return an invalid value. This has certainly caused crashes for someone out there.
thcrap_ExitProcess(): detour_next() doesn't make any sense here.
Ensure that detours are cleaned up after everything else.
Add basic zip file reading support.

Seriously, *this* had to become the industry standard container format for Deflate? Why.
zip: Add a function to unzip files to disk while preserving their timestamp.
zip: Support NTFS timestamps from a file's extra data.
zip: Add support for archive comments.
Add a script to digitally sign a release archive.
Add patch_file_delete().
Allow deletion of unmodified patch files by using JSON nulls in files.js.
Store the thcrap directory in the run configuration.
scripts: Enforce Unix newlines when writing JSON files.