REF: collect casting portion of Block.setitem
Block.setitem is sometimes inplace and sometimes casts/copies.  The idea here is to isolate the casting cases and eventually separate them into their own method, so we can be more careful about when we call the inplace vs not-inplace setters.