Metadata wrapper for callable environment builtins.
Runtime-created callables still use the raw tuple shapes; this wrapper is for Env bindings where we know the public builtin name and validation contract.
@type raw_binding() :: {:normal, function()} | {:variadic, function(), term()} | {:variadic_nonempty, atom(), function()} | {:multi_arity, atom(), tuple()} | {:collect, function()}
@type t() :: %PtcRunner.Lisp.Env.Builtin{ args: term(), binding: raw_binding(), name: atom() }
@spec args(t() | term()) :: term()
@spec builtin?(term()) :: boolean()
@spec name(t() | term()) :: atom() | nil
@spec unwrap(t() | term()) :: term()
@spec wrap(atom(), raw_binding(), term()) :: t()