Do a fast dup of args when all symbols, due to kwarg processing. #5399
Keyword argument processing currently mutates the incoming Hash,
Keyword argument processing currently mutates the incoming Hash, calling delete as arguments are distributed to local variables. This allows easy support for the keyword rest argument, since it just gets whatever's left, but it forces us to make this defensive copy. We also can skip some duping if the keyword arguments are all literal and not just contained in an opaque hash. Of course we really just need to wire up straight-through keyword args dispatch. Fixes #5267.