BUG: fixes in replace to deal with block upcasting

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)

now passed test in GH #3064