fix #6098, crash on stack overflow splicing big argument lists

still slow as hell and still a bad idea, but at least it doesn't segfault
fix #6099, small oversight that left out .+= and .-=
fix #6091, message for non-finite or length mismatch in test_approx_eq
mitigate #6097

the general problem was that one place in the code had a larger type for
a tuple than another. I don't know why, but we can at least generate
correct code instead of crashing. there was already some code in boxed()
towards handling this kind of thing, but it needed to be rearranged a bit.