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.
Got it. Ok. That's fixed on my local branch. Any idea on my splice! build failure?
```julia
error during bootstrap: LoadError(at "sysimg.jl" line 68: LoadError(at "osutils.
jl" line 38: UndefVarError(var=:string)))
Basic Block in function 'julia_splice!;2728' does not have terminator!
label %if26
LLVM ERROR: Broken module, no Basic Block terminator!
Stack dump:
0.      Running pass 'Function Pass Manager' on module 'julia'.
1.      Running pass 'Preliminary module verification' on function '@"julia_spli
ce!;2728"'
Makefile:83: recipe for target '/c/Users/karbarcca/julia/usr/lib/julia/sys0.o' f
ailed
make[1]: *** [/c/Users/karbarcca/julia/usr/lib/julia/sys0.o] Error 1
Makefile:32: recipe for target 'release' failed
make: *** [release] Error 2
```
My current version of splice!
```julia
function splice!{T<:Integer}(a::Vector, r::UnitRange{T}, ins::AbstractArray=_default_splice)
    v = a[r]
    m = length(ins)
    if m == 0
        deleteat!(a, r)
        return v
    end

    n = length(a)
    f = first(r)
    l = last(r)
    d = length(r)

    if m < d
        delta = d - m
        if f-1 < n-l
            _deleteat_beg!(a, f, delta)
        else
            _deleteat_end!(a, l-delta+1, delta)
        end
    elseif m > d
        delta = m - d
        if f-1 < n-l
            _growat_beg!(a, f, delta)
        else
            _growat_end!(a, l+1, delta)
        end
    end
    try
        for k = 1:m
            a[f+k-1] = ins[k]
        end
    catch e
        if m < d
            splice!(a,f,v)
        elseif m > d
            a[r] = v
            _deleteat!(a, l+1, delta)
        else
            a[r] = v
        end
        rethrow(e)
    end
    return v
end
```