function validate(path, options, callback) {
    options = options || {};
    fs.exists(path, function (doesExist) {
        if (!doesExist) {
            callback(null, {
                errors: [[Errors.NOT_FOUND_ERR, path]]
            });
            return;
        }
        temp.mkdir("bracketsPackage_", function _tempDirCreated(err, extractDir) {
            if (err) {
                callback(err, null);
                return;
            }
            extractAndValidateFiles(path, extractDir, options, callback);
        });
    });
}
Implements the "validate" command in the "extensions" domain.
Validates the zipped package at path.

The "err" parameter of the callback is only set if there was an
unexpected error. Otherwise, errors are reported in the result.

The result object has an "errors" property. It is an array of
arrays of strings. Each array in the array is a set of parameters
that can be passed to StringUtils.format for internationalization.
The array will be empty if there are no errors.

The result will have a "metadata" property if the metadata was
read successfully from package.json in the zip file.

@param {string} path Absolute path to the package zip file
@param {{requirePackageJSON: ?boolean, disallowedWords: ?Array.<string>, proxy: ?<string>}} options for validation
@param {function} callback (err, result)