ENH: add regex functionality to DataFrame.replace

addresses #2285. cc @jreback and #3582.