BUG: Fix for .str.replace with invalid input
- [x] closes #13438
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

.str.replace now raises TypeError when replacement is invalid

## [Current coverage](https://codecov.io/gh/pydata/pandas/pull/13460?src=pr) is **84.28%**

> Merging [#13460](https://codecov.io/gh/pydata/pandas/pull/13460?src=pr) into [master](https://codecov.io/gh/pydata/pandas/branch/master?src=pr) will increase coverage by **<.01%**

``` diff
@@             master     #13460   diff @@
==========================================
  Files           138        138          
  Lines         50937      50939     +2   
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
+ Hits          42934      42936     +2   
  Misses         8003       8003          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last updated by [d814f43...d5c3f1b](https://codecov.io/gh/pydata/pandas/compare/d814f433940031029f1ddf0d9abdecdf4ad31dac...d5c3f1b077dd28bfe6f59498610603998f3c796d)
 thanks @priyankjain 
