Automatically adjust HTML table text color when using `style.background_gradient()`
#### Code Sample

```python
import pandas as pd
import numpy as np

np.random.seed(24)
df = pd.DataFrame(np.random.randn(8, 4), columns=list('ABCD'))
df.style.background_gradient()
```
![image](https://user-images.githubusercontent.com/4560057/40730971-0328c8d8-63fe-11e8-9966-3e7e06d58eb6.png)

#### Problem description

Since all text in the displayed HTML table is black, it is difficult to see values when the background is dark. This is currently possible to adjust manually with the `high` and `low` parameters, but this limits the range of the colormap.

A possible improvement would be to color text white automatically if the background color is too dark (low luminance). This approach is currently [implemented for annotated heatmaps](https://github.com/mwaskom/seaborn/blob/scatterplot/seaborn/matrix.py#L241-L242) in the visualization library `seaborn`, and similar criteria could be used with `pandas` styles ([luminance implementation](https://github.com/mwaskom/seaborn/blob/scatterplot/seaborn/utils.py#L547-L566) and [w3c's official definition](https://www.w3.org/WAI/GL/wiki/Relative_luminance)).

Automatic text coloring could be exposed through a `text_color` parameter to `style.background_gradient()`, which could be either `auto`, or a color value. Another alternative is to let the user adjust the luminance threshold directly, with a sound default value. A third approach would be to create a new method for controlling the text color in general, and call it with specific arguments inside `style.background_gradient()`.

If you think adding this functionality would be useful, I am happy to attempt a PR.

#### Expected Output

luminance threshold 0.408 (`seaborn` default)
![screenshot-20180530-112153](https://user-images.githubusercontent.com/4560057/40730034-bc29faf8-63fb-11e8-90f5-2cd3df94b638.png)

luminance threshold 0.2
![screenshot-20180530-112028](https://user-images.githubusercontent.com/4560057/40730036-bc487334-63fb-11e8-87be-82e9e5ab7e8a.png)


#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit: c85ab083919b59ce84c220d5baf7d34ff4a0bcf2
python: 3.6.5.final.0
python-bits: 64
OS: Linux
OS-release: 4.16.8-1-ARCH
machine: x86_64
processor: 
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.21.0.dev+2049.gc85ab0839.dirty
pytest: 3.5.1
pip: 9.0.3
setuptools: 39.2.0
Cython: 0.28.2
numpy: 1.14.3
scipy: 1.1.0
pyarrow: None
xarray: None
IPython: 6.4.0
sphinx: 1.7.4
patsy: 0.5.0
dateutil: 2.7.3
pytz: 2018.4
blosc: None
bottleneck: 1.2.1
tables: 3.4.3
numexpr: 2.6.5
feather: None
matplotlib: 2.2.2
openpyxl: 2.5.3
xlrd: 1.1.0
xlwt: 1.3.0
xlsxwriter: 1.0.4
lxml: 4.2.1
bs4: 4.6.0
html5lib: 1.0.1
sqlalchemy: 1.2.7
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None

</details>
