function readdir(path, callback) {
        appshell.fs.readdir(path, function (err, contents) {
            if (err) {
                callback(_mapError(err));
                return;
            }

            var count = contents.length;
            if (!count) {
                callback(null, [], []);
                return;
            }

            var stats = [];
            contents.forEach(function (val, idx) {
                stat(path + "/" + val, function (err, stat) {
                    stats[idx] = err || stat;
                    count--;
                    if (count <= 0) {
                        callback(null, contents, stats);
                    }
                });
            });
        });
    }
Read the contents of the directory at the given path, calling back
asynchronously either with a FileSystemError string or an array of
FileSystemEntry objects along with another consistent array, each index
of which either contains a FileSystemStats object for the corresponding
FileSystemEntry object in the second parameter or a FileSystemError
string describing a stat error.

@param {string} path
@param {function(?string, Array.<FileSystemEntry>=, Array.<string|FileSystemStats>=)} callback