binary operations on a `StaticArray`

and `Array`

give outputs with quite-inconsistent types. For example, intuitively `SVector .+ Vector`

should give a `SVector`

rather than a `Vector`

?

```
julia> using StaticArrays
julia> typeof(SVector{3, Float64}(randn(3)) .+ randn(3) )
Array{Float64,1}
julia> typeof(SVector{3, Float64}(randn(3)) .* randn(3) )
Array{Float64,1}
julia> typeof(SVector{3, Float64}(randn(3)) .+ 1.0 )
SArray{Tuple{3},Float64,1,3}
julia> typeof(SVector{3, Float64}(randn(3)) .* 2.0 )
SArray{Tuple{3},Float64,1,3}
julia> typeof(SMatrix{3, 2, Float64}(randn(3, 2)) * randn(2) )
SArray{Tuple{3},Float64,1,3}
julia> typeof(randn(1, 3) * SMatrix{3, 2, Float64}(randn(3, 2)) )
Array{Float64,2}
```

how does the output type be determined? could I override them? thanks.