function compileMap(/* lists... */) {
  var result = {
        scalar: {},
        sequence: {},
        mapping: {},
        fallback: {}
      }, index, length;

  function collectType(type) {
    result[type.kind][type.tag] = result['fallback'][type.tag] = type;
  }

  for (index = 0, length = arguments.length; index < length; index += 1) {
    arguments[index].forEach(collectType);
  }
  return result;
}
Parse options from `argv` removing known options,
and return argv split into operands and unknown arguments.

Examples:

   argv => operands, unknown
   --known kkk op => [op], []
   op --known kkk => [op], []
   sub --unknown uuu op => [sub], [--unknown uuu op]
   sub -- --unknown uuu op => [sub --unknown uuu op], []

@param {String[]} argv
@return {{operands: String[], unknown: String[]}}
@api public