patch_update(): Always use local server URLs.

That's the only drawback to the new updating system, which treats patch.js just like a normal file.

Oh well, at least it removes some ambiguity from the code.
patch_update(): Move local file hash list to files.js.

This will cause everyone to redownload everything...
patch_update(): Load file hash list from files.js.
Eliminate potential VLA memory leaks.

Whoops.
thcrap_configure: Mention that the shortcuts work from anywhere.
Do string table lookups for string parameters in variable argument lists.
Refactor persistent string allocation into its own function.

There will be more than just sprintf.
Use length-prefixed strings for persistent string storage.

It doesn't really give any significant boost in performance, but hey, it makes for a much cleaner implementation - especially if you take into account what's to follow.
Add strings_strclr().
Add strings_strcat().
thcrap_init(): Write the "game" key in any case.

Turns out that we not only can have games with no dedicated main JSON file, but also games that do have one, well, without a "game" key.
layout_match(): Correctly parse nested layout markup.