Adjust array/scalar promotion to handle rationals and complex numbers.

Even though I understand the reason, I am not a big fan of the fact that array and scalar promotion are different. However, given the difference, I still believe this is wrong
```
 julia> [1//1]/π
1-element Array{Rational{Int64},1}:
 78256779//245850922
```
and this must be violating the no array explosion policy
```
julia> [complex(1.0f0)]/1.0
1-element Array{Complex{Float64},1}:
 1.0+0.0im
```
This pull request gives
```
julia> [1//1]/π
1-element Array{Float64,1}:
 0.31831

julia> [complex(1.0f0)]/1.0
1-element Array{Complex{Float32},1}:
 1.0+0.0im
```
I might have overlooked a corner case or two, so please have a look.