ENH: add `cline` to `Styler.to_latex`
- [x] closes #21673

This allows `Styler.to_latex` to also render `\cline` to separate sparse MultiIndex rows according to user input. Tests are also included to demonstrate functionality with hidden rows and hidden index levels.

Note that DataFrame.to_latex also uses `\cline` but it is forced in certain cases without options.

```
midx = pd.MultiIndex.from_product([["A", "-", "B"], [0], ["X", "Y"]], names=["lvl 0", "lvl 1", "last lvl"])
df = pd.DataFrame([[1, "pig"], [2, "coin"], [99, ""], [99, ""], [3, "sky"], [4, "pie"]], 
                  index=midx, columns=["int", "str"])
styler = df.style
styler.hide([("-", 0, "X"), ("-", 0, "Y")])
styler.hide(level=[1,3])
print(styler.to_latex(clines="all;index", hrules=True, multirow_align="t"))
```

| | `all` | `skip-last` |
--- | --- | --- |
**`index`** | <img width="236" alt="Screenshot 2021-12-31 at 14 49 53" src="https://user-images.githubusercontent.com/24256554/147826613-bedb3728-738b-4c06-ac52-93caf4e3e652.png"> | <img width="227" alt="Screenshot 2021-12-31 at 14 55 22" src="https://user-images.githubusercontent.com/24256554/147826866-c58219a5-fef2-4e26-a769-4b0ea8277b56.png">
**`data`** | <img width="233" alt="Screenshot 2021-12-31 at 14 51 30" src="https://user-images.githubusercontent.com/24256554/147826673-d91875ab-512e-46ef-971f-621f595bf0bb.png"> | <img width="237" alt="Screenshot 2021-12-31 at 14 52 59" src="https://user-images.githubusercontent.com/24256554/147826752-664ad7de-092f-4b48-bfbb-7e1b654b6b34.png"> |

Default render without ``clines``:


<img width="218" alt="Screenshot 2021-12-31 at 15 03 14" src="https://user-images.githubusercontent.com/24256554/147827219-f604fdea-35e9-4394-8fd7-9b75b3fba351.png">






@meeseeksdev backport 1.4.x thanks @attack68  Something went wrong ... Please have a look at my logs.