fix ImmutableDict(pairs...) constructor (#36143)
It could only handle a couple of pairs, e.g.
ImmutableDict(1=>1, 2=>2, 3=>3) would throw.
The fix is implemented by adding the
`ImmutableDict(t::ImmutableDict, pairs...)` constructor,
which generalizes `ImmutableDict(t::ImmutableDict, pair)`
(with some similarity to how `push!` accepts multiple items
to be pushed).