REF: implement ensure_can_hold_na
Much simpler than maybe_promote, which for the most part id like to replace with something like

```
def maybe_promote(dtype, fill_value):
    inferred, fv = infer_dtype_from(fill_value)
    new_dtype = find_common_type([dtype, inferred])
    return inferred, fv
```
sure can you rebase