Fix #7642.

Explicitly call convert on append/prepend/splice items to match 1st array elements. This causes a MethodError to be thrown before any array growing/shrinking happens. Fixes #7642.

cc: @kmsquire, in particular I think the `splice!` changes should do the trick, but I'd appreciate a look over to make sure I didn't miss something.
This is incorrect --- `array_grow_end` changes the length of the array. `d+1` should be the correct offset.