name() :: atom() | binary()
t() :: %Grumble.Arg{name: name(), value: term()}
new(name :: name(), value :: term()) :: t()