[[feature-stackdir]] Basic low level expanded stack IO API.

Add API definition for low-level IO operations on Expanded Stackfiles.
[[feature-stackdir]] Sketch out internal API.
[[feature-stackdir]] Top level save transaction logic.
[[feature-stackdir]] Add error-recording helper functions.
[[feature-stackdir]] Add error reports to transaction logic.
[[feature-stackdir]] Add accessors to get/set target path.
[[feature-stackdir]] Add accessor to set state array for saving.
[[feature-stackdir]] Implement MCStackdirIOGetStatus().
[[feature-stackdir]] Add stub implementation of load commit function.
[[feature-stackdir]] Add low-level save call access via _internal.
[[feature-stackdir]] Generate "_version" file.
[[feature-stackdir]] MCStackdirIORemoveFolderRecursive: skip '.' and '..'.
[[feature-stackdir]] Refactor MCStackdirIOCommitSave() to simplify logic.
[[feature-stackdir]] Don't use base64-encode to generate filenames.

The base64 alphabet includes '/'. Derp.
Merge 'runrevfraser/bugfix-13580' (#1380) into feature-stackdir.

Needed to fix building on non-Ubuntu x86-64 Linux systems.
Merge branch 'misc-unicodestring' (#1391) into feature-stackdir.
[[feature-stackdir]] Create object directories.
[[feature-stackdir]] Stub in most remaining object save functions.
[[feature-stackdir]] Add helper function for writing UTF-8 files.
[[feature-stackdir]] Refine MCStackdirIOSaveVersion().

* Add error information if saving fails.
* Use MCStackdirIOSaveUTF8().