Bug in scatter_matrix
If diagonal='kde', then the keyword arguments are passed to both plot and scatter. They don't have the same call signatures, so you can't do this. I guess you need separate keyword arguments. I would vote for removing **kwds from the diagonal plots entirely and just fixing those axes ex-post if you need something changed.  For example,

```
import numpy as np
import pandas
import matplotlib.pyplot as plt

url = ("http://archive.ics.uci.edu/ml/machine-learning-databases"
       "/pima-indians-diabetes/pima-indians-diabetes.data")

names = ["num_pregnant", "plasma_glucose", "blood_press",
         "skin_fold", "insulin", "bmi", "pedigree", "age",
         "class"]

pima_data = pandas.read_csv(url, header=None, names=names)
outcome = pima_data.pop("class")
```

Say I want to differentiate the features by color across the class. I can pass color keyword to scatter.

```
class_color = list(outcome.apply(lambda x : "red" if x else "blue"))
features = [names[1], names[4], names[5], names[7]]
X = pima_data[features]

pandas.scatter_matrix(X, color=class_color)
```

but as soon as you try to also use 'kde' this breaks.

```
pandas.scatter_matrix(X, color=class_color, diagonal='kde')
```
