BUG: `DataFrame.apply` forces consistent dtypes with `result_type="broadcast"` 
- [x] I have checked that this issue has not already been reported.

- [ ] I have confirmed this bug exists on the latest version of pandas.

- [x] (optional) I have confirmed this bug exists on the master branch of pandas.

---

The documentation on `result_type` for `DataFrame.apply` states 

>‘broadcast’ : results will be broadcast to the original shape of the DataFrame, the original index and columns will be retained.

It doesn't mention enforcing dtypes, yet:

```
>>> df = pd.DataFrame([[1, 2], [3, 4]], index=["A", "B"], columns=["X", "Y"])
>>> df.apply(lambda s: [1, 2], axis=1, result_type="broadcast")
   X  Y
A  1  2
B  1  2
>>> df.apply(lambda s: ["s", "t"], axis=1, result_type="broadcast")
# ValueError: invalid literal for int() with base 10: 's'
>>> df.apply(lambda s: [3.999, 2], axis=1, result_type="broadcast")
   X  Y
A  3  2
B  3  2
>>> df.apply(lambda s: [3+1j, 2+2j], axis=1, result_type="broadcast")
# TypeError: can't convert complex to int
```
This seems like a bug to me. Can anyone confirm?