simplify type unions after instantiation

ref #7017

before it was possible for Union(Vector{T},Vector{Float64}) to end up as
Union(Vector{Float64},Vector{Float64}) after substituting T.