BUG: Replaced ValueError exception with TypeError exception in df.where() function

Replaced ValueError exception with TypeError as it is more appropriate for the error it serves

- [] closes issue #56330 where there was a consensus that a TypeError is more appropriate for the following error: "Boolean array expected for the condition, not (non-bool type)". Since ValueErrors are raised when the type is correct but the value is incorrect, whereas in this function we are raising an exception because of a wrong type, hence the TypeError.

Thanks for the PR! Looks like the tests need adjusted too. Yeah I'm super confused because I literally only changed two keywords in the entire file and there was no way it messed up so much that 27 tests failed. Will I have to re-Pr this or will you guys fix the test stuff? Or do I need to change anything in my PR? We test that the correct error message is raised, and you're changing that behavior. Here is an example of a failing test:

https://github.com/pandas-dev/pandas/actions/runs/7110780716/job/19357783827?pr=56358#step:8:1536

```
with pytest.raises(ValueError, match=msg):
    df.where(cond)
```

Your change now makes it so that a `TypeError` is raised, and so this test is now failing. The test needs to be updated to check for a `TypeError`.
 ohh that actually makes a lot of sense. this is my first time contributing to a codebase (did some documentation work in the past) so I had no idea about the testing methods. Do I have to modify those tests in this PR or is that something that the moderators take care of? > Do I have to modify those tests in this PR or is that something that the moderators take care of?

The tests need to be modified so that they're passing in this PR. @DarthKitten2130 Are you still working on it? Yeah actually I'm in the process of modifying the tests. Please do not close this PR I just haven't been finding the time.