In-memory loader using zero-based integer IDs.
Append items while preserving existing IDs.
@type t() :: %GEPA.DataLoader.List{items: [term()]}
@spec add_items(t(), [term()]) :: t()
@spec new([term()]) :: t()