Optional explicit return type for map and broadcast

```julia
broadcast((x,y)->x+1.5y, (-5:5)', -5:5) => InexactError()
broadcast((x,y)->x+1.5y, Float64, (-5:5)', -5:5) => 11x11 Array{Float64,2}

map(join, ["z", "я"]) => ERROR: invalid ASCII sequence
map(join, UTF8String, ["z", "я"]) => UTF8String["z","я"]
```