Use iodata_to_binary in join/2 and map_join/3

Everything is previously converted to a string using
the String.Chars protocol, so we can just treat it
as iodata.
Fix regression when case is used inside cond head