ENH: `Styler.apply_index` and `Styler.applymap_index` for conditional formatting of column/index headers
Checks an item on #41648 and #41693

Currently Styler has the `apply` and `applymap` methods to **perform conditional styling on the data elements**.

Recent additions to `Styler.set_table_styles` allows styling of index and column headers if the key-labels are directly specified. But this solution cannot work with LaTeX, nor excel output, and is obviously not conditionally applied.

This PR adds the mechanics to **perform conditional styling on per level index labels**

Follow-ons are:

- [x] updating LaTeX templates to incorporate the styles. (#41993)
- [x] updating Excel output to incorporate the styles. (#41995)
- [x] update Styler user guide

![Screen Shot 2021-06-13 at 10 32 40](https://user-images.githubusercontent.com/24256554/121800538-d3df7400-cc32-11eb-9aaf-8124ba221171.png)

> wouldn't apply_axis be more appropriate? e.g. don't see _header anywhere else in the codebase
> 
> do we need both (i get that we have symmetry, but is this overkill)?

i came up with 'header' becuase in the HTML that styler renders the index and column header cells are `<th>` (table header) elements, and these are the ones targeted by this method.

I'm not tied to the name but `apply_axis` feels a bit odd, since `axis` is already used by pandas for a common meaning and not really to do with impacting the values of the index or column headers. 

`apply_index(axis="columns")` might be an alternative to make it clear that the function is being applied to either the index values or the column header values??    thanks @attack68 very nice!