BUG: update should try harder to preserve dtypes #4094
- [ ] closes #4094
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [x] whatsnew entry

I have to admit, I am not quite sure about the code in the [initial example](https://github.com/pandas-dev/pandas/issues/4094#issue-16212879). But the rest of the given examples ([1](https://github.com/pandas-dev/pandas/issues/4094#issuecomment-297671925), [2](https://github.com/pandas-dev/pandas/issues/4094#issuecomment-583174514)) are converted to tests and they do pass.

I would have loved to make better use of hypothesis in the tests, but currently [column](https://hypothesis.readthedocs.io/en/latest/numpy.html#hypothesis.extra.pandas.columns) does not support dtype strategies and neither does [from_dtype](https://hypothesis.readthedocs.io/en/latest/numpy.html#hypothesis.extra.numpy.from_dtype) (if I would define the elements of the column and infere the dtype).
This pull request is stale because it has been open for thirty days with no activity. Please update or respond to this comment if you're still interested in working on this. @Horstage closing as stale. ping when ready to continue 