code: function createOutputDirsAsync(buildOptions) {
    var outputDirs = new OutputDirs(buildOptions);
  
    var tasks = [];
    tasks.push(makeDirAndParents(outputDirs.tmp));
    tasks.push(makeDirAndParents(outputDirs.gen));
    tasks.push(makeDirAndParents(outputDirs.build));
  
    return kew.all(tasks)
        .then(function() { return outputDirs; });
  }
docs: Creates output directories specified by buildOptions and returns a future
  OutputDirs object with tmp, gen, and build properties for the created paths.
  @param {!Object} buildOptions Specifies options specific to this build (like
  debug/release); see README.md for option documentation.
  @return {!Promise.<!OutputDirs>}