Add JointGrid and jointplot

This brings back the functionality of `regplot` in version 0.2, but in a much more flexible way.

Two new objects: `JointGrid` and `jointplot`. (Currently, `JointGrid` is implemented).

`JointGrid` is a high-level class to abstract plotting a bivariate and univariate marginal plots. Here's a basic example:

``` python
g = JointGrid("x", "y", data)
g.plot_marginals(sns.distplot)
g.plot_joint(sns.regplot)
g.annotate(stats.pearsonr)
```
![margingrid](https://f.cloud.github.com/assets/315810/2366530/6b664366-a70c-11e3-9f78-2b0cad8d29d4.png)

More complicated example:

``` python
g = JointGrid("x", "y", data)
g.plot_marginals(sns.kdeplot, color=sns.color_palette("Greens")[-2], shade=True)
cmap = sns.blend_palette(["white"] + sns.color_palette("Greens", 10), as_cmap=True)
g.plot_joint(sns.kdeplot, shade=True, cmap=cmap)
```

![margin_grid](https://f.cloud.github.com/assets/315810/2367211/fe9247a8-a747-11e3-9fa3-ffc0468d59f3.png)

The work on this is mostly done (but feedback would be good).

----

Now comes time to decide how `jointplot` should work. The basic signature would look like:

``` python
sns.jointplot("x", "y", data)
```

- What's the default bivariate plot? `plt.scatter`? `seaborn.regplot`, `seaborn.kdeplot`?
- How do we let the user change the bivariate plot? Pass a plotting function?

``` python
sns.jointplot("x", "y", data, kind=sns.regplot)
```

Or a string key?

``` python
sns.jointplot("x", "y", data, kind="regression")
```

The former is more flexible, but quite overlapping with using `JointGrid` directly. The latter makes it easier to specify a few limited choices, and point the user at `JointGrid` if they want more flexibility. I'm leaning towards the latter.

cc: @twiecki