feat: Implement option 'delete_rows' of argument 'if_exists' in 'DataFrame.to_sql' API.
- [x] closes #37210 
- [x] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [x] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [x] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [x] Added an entry in the latest `doc/source/whatsnew/v3.0.0.rst` file if fixing a bug or adding a new feature.

@WillAyd I chose the name `delete_rows` instead of `delete_replace` because the behavior of `replace` right now is of `recreate` - as you [mentioned](https://github.com/pandas-dev/pandas/issues/37210#issuecomment-2486756761) - and `delete_rows` means exactly what is going on behind the scenes.

@erfannariman tagging you due to your help/interest during the lifecycle of this issue. ~~@WillAyd it seems new tests have introduced some sort of "lock" on pytest. It is affecting 3.11, 3.12 and "Future infer strings" using a single CPU (it works using multiple). Do you have any hunch ?~~

NVM. CI is fine now. blocked by https://github.com/pandas-dev/pandas/pull/60748. Changing to draft. Hello @WillAyd  and @mroeschke,
I believe the merge of https://github.com/pandas-dev/pandas/pull/60748 has unblocked this one. Would you guys mind taking a look ? I'm resolving all conversations so we can start fresh on this. Thanks @gmcrocetti  Thanks a lot for reviewing it folks. A special thanks to @WillAyd who reviewed the two PRs multiple times 🙇 .
Appreciated !