Writes an argument value into an Arg proto.

value The value to encode.
arg_function_language The language to use when encoding functions. If this is set to None, it will be set to the minimal language necessary to support the features that were actually used.
out The proto to write the result into. Defaults to a new instance.

The proto that was written into as well as the arg_function_language that was used.

ValueError if the object holds unsupported values.