Allow MCSystemInterface::ListFolderEntries() of arbitrary paths.

Sometimes it's useful to iterate over the contents of directories
other than the current working directory.
MCIPhoneSystem::ListFolderEntries(): Ensure path is UTF-8 encoded.
MCAndroidSystem::ListFolderEntries(): Ensure path is UTF-8 encoded.
MCLinuxDesktop::ListFolderEntries(): Ensure path has system encoding.
MCPosixSystem::ListFolderEntries: Ensure path has system encoding.
[[ListFolderEntries]] Properly handle directories other than the CWD.

On some platforms, directory entry names are passed directly to
e.g. the stat(2) system call in order to get information such as the
file type, size and permissions.

When arbitrary directories can be listed, it is necessary to construct
a proper path, rather than assuming that the directory entry name will
be correctly resolved relative to the current working directory.
Merge branch 'misc-listfolderentries' (#1454) into feature-stackdir.
[[feature-stackdir]] Don't change directory during directory recursion.

We can now pass a path directly to MCsystem->ListFolderEntries(), but
it has to be a native path.
[[feature-stackdir]] Top-level loading logic.
[[feature-stackdir]] Use last 2 digits of object UUID to name LSB dir.

Fixes an off-by-one error.