BUG+DOC: Recent Styler Enhancements
**DOC**: this edits the `style.ipynb` file to include examples of the 3 recent enhancements to `Styler`:

 - Tooltips
 - External CSS classes to datacells
 - Row and Column styling via table styles

It also addresses 3 minor bugs that I detected when wirting the documentation:

**BUG1** (lines 696-703): `set_td_classes` only attached classes to 'diagonal elements' of the DataFrame due a misaligned comprehension loop:

```
{
r: {
   c: [str(classes.iloc[r, c])] 
   for c, cn in enumerate(classes.columns) if not mask.iloc[r, c]
   }
for r, rn in enumerate(classes.index)
}
```
replaces:
```
{
r: {
    c: [str(classes.iloc[r, c])]
    }
for r, rn in enumerate(classes.index)
for c, cn in enumerate(classes.columns)
if not mask.iloc[r, c]
}
```

**BUG2** (lines 513 to 537): external css class names from the set_td_classes were appended to the HTML id tag, as well as the HTML class tag, due to a premature variable update relating to the `row_dict`. The solution was to re-order so that 'id' tags were generated first and then 'class' was updated with information from the new methods.

**BUG3** (lines 1920-1925): Tooltips were generated for the wrong indexes/columns, since the null rows/columns were dropped and then the interger locations of rows/columns was mapped. The solution was to avoid dropping null rows/columns.



@attack68 can you also add tests for the bugs you have fixed (e.g. simply a check on the generated html might be fine), just to lock down these cases. @jreback think this is ready now.. thanks @attack68 

pls check the rendered docs when they build: https://pandas.pydata.org/docs/dev/