BUG/ENH: guarantee blocks will upcast as needed, and split as needed
         e.g. a replace on an IntBlock with a float will upcast, it may
         yield multiple blocks if the original IntBlock didn't fully replace

         small fix in com.mask_missing to guarantee that a bool ndarray is
         returned even in the case of a string comparison with a numeric array
         (which for some reason numpy returns a single, non-ndarray value)

BUG: py3 issue in com._maybe_promote for recognizing string types on number like dtypes!
Merge pull request #3065 from jreback/replace

BUG/ENH: guarantee blocks will upcast as needed, and split as needed
ENH: _maybe_upcast_putmask now has the keyword, change to provide inline
       putmask changes to an object (series)
     apply in BlockManager now has a keyword, filter to allow acting
       on only those items contained in the filter (if supplied)
CLN: consolidated all replace subs to main replace in DataFrame
       (which calls replace in BlockManager)
TST: now passed test in GH 3064
Merge pull request #3068 from jreback/replace2

BUG: fixes in replace to deal with block upcasting