Fixed|libdeng2|Archive: Listing contents of empty folders in Archive

Archives don't actually contain folders, so attempting to list the
contents of _any_ nonexistent path should not throw an exception.
Instead, just return an empty list as if an actual empty folder was
listed.
libdeng2|FS: Improvements for accessing Archive through file system

ArchiveEntryFile now has a meaningful flush() method that causes the
entire archive to be written to the source file (if modified).

ArchiveFeed write access was clarified: if the source file has write
access at the time of ArchiveFeed creation, the populated files
and subfolders for the archive contents will be created with Write
mode.
libdeng2|FS: Added file system utilities

(Re)making a folder with a single specific feed, and copying a file
and possibly interpreting the resulting copy.
Refactor|libdeng2|FS: Added file list printer, applied pimpl idiom
libdeng2|NativeFile: Revised internal native file access

The major change in this commit is that flushing a NativeFile will
cause the native file handle to be closed after the write is completed.

Also applied the pimpl idiom.
Tests: Trying out new FS2 features

Printing a list of files, accessing archive contents via file tree,
copying a ZIP file.
Fixed|libdeng2|File: Build issue

Ambiguity between File::d and Folder::d.
Cleanup|libdeng2: Removed unnecessary File::setMode() calls

All files created by new/replaceFile() have write access.
Refactor: Use improved FS2 flushing, file system utils

It is no longer necessary or advisable to change a file to ReadOnly
mode after writing it. Instead, the file should just be flushed.
Refactor|Savegame Tool: Use file system utils

Setting up a folder with a specific feed is now easier. Earlier
contents will be cleaned out of the way (without touching the
source data).
Cleanup
Cleanup|libdeng2|Session: Use file system utils
libdeng2|SavedSession: Only populate when certain about changes

Population should only occur when there is certain knowledge that
the source data has change without FS2 being aware of it (or when
feed attachments are modified).
Fixed|Cleanup|libcommon: File system usage in GameSession

This commit addresses FS2 usage issues in GameSession and applies
some cleanup.

- Folder::replaceFile() does not require a possibly existing file
  to be in write mode (only the folder needs to be in write mode).
- setMode(ReadOnly) should no longer be user to finish a write;
  a flush is now used instead.
- The savegames folder and its contents are always in write mode
  because they inherit write mode from /home.
- Save packages are explicitly flushed after files in them are modified
  (so the changes are immediately pushed to the ZIP file and don't
  hang around buffered in memory until later time -- which would
  be a problem after, say, a crash).
- Additionally, cleanup with DRY in mind.
Merge branch 'master' of ssh://github.com/skyjake/Doomsday-Engine