DEPR: `Styler.where` in favour of using `applymap` and `apply`
`Styler` by definition is a conditional renderer. The functions it provides, `apply` and `applymap`, serve as conditional functions to render a style.

The function `Styler.where` therefore, in the first case, seems unnecessary and indirectly confusing since it is a conditional rendering function implying perhaps the other methods are not.  Not only is it just a 'convenience' wrapper of `applymap`:

```
def where(cond, value, other, subset, **kwargs):
    return self.applymap(lambda v: value if cond(v) else other, subset=subset, **kwargs)
```
But I also think, in the second case, it is quite inconvenient for a couple reasons:
1)  The docs are ambiguous:
```
cond: callable: cond should take a scalar and return a boolean.
**kwargs: dict: pass along to cond.
```
and in fact `kwargs` appear in the code but do nothing.

2) It feels that there is more benefit to be had by a user learning how you use `apply` and `applymap` to the same effect through good examples.

For example: 
`styler.applymap(lambda v: props if cond(v) else None, subset=subset)` or
`styler.apply(lambda d: np.where(d > 10, props, ""), axis=None, subset=subset)`

seem pretty straightforward replacements???

Perhaps documenting in the first instance that `apply` and `applymap` are preferred over `where` is non-controversial. 