Loads JSON data from a file and returns it as an object; if the file does not exist, then
null is returned

@param filename {String} the filename to load
@return {Object?} the parsed contents, or null if the file does not exist
async function(filename) {
      if (!await fs.existsAsync(filename)) {
        return null;
      }
      var data = await fs.readFileAsync(filename, "utf8");
      try {
        return qx.tool.compiler.utils.Json.parseJson(data);
      } catch (ex) {
        throw new Error("Failed to load " + filename + ": " + ex);
      }
    }