treat all arguments to concat functions consistently

Currently the first argument must be of the appropriate type to avoid surprising results, but arguments beyond the first may be of any type.

/cc @buzzdecafe, @CrossEye, @megawac