Omnibus enhancements to linear model plotting and structured plot grids

This has a few large changes all at once, as they are interrelated:

- The `FacetGrid` class, which abstracts the data-aware structured grid out of the previous version of `lmplot` such that it can be used to facet arbitrary plots very easily (using `FacetGrid.map()`). There are a few other nice new things about `FacetGrid`, primarily that it can draw its legend outside of the axes, and `despine` is called automatically. Here's a simple example:

![FacetGrid](https://f.cloud.github.com/assets/315810/2172956/968e3ff4-959a-11e3-80ca-148d480f2341.png)

- Correspondingly, the `lmplot` and `regplot` functions have been completely rewritten to take advantage of this new machinery. The `lmplot` interface should mostly be the same, save a few things that were broken in the interest of making progress on unifying APIs across the package, and a couple of advantages here and there. There is a more dramatic change to `regplot`, which now is an "Axes-level" function. This should be good going forward in that `regplot` and `lmplot` can do all the same things (plot with different regression models, remove confounding variables, etc.), but `regplot` can now do them flexibly into an existing Axes. It also means that `lmplot` is just a thin wrapper around `regplot` and `FacetGrid`, making for overall much cleaner code. As discussed in #101, this will mean the current behavior of `regplot` will vanish on `master` for a while, but the next task will be to introduce `jointplot` which will return the marginal histrograms, etc.

- There are three new related functions, `barplot`, `pointplot`, and `factorplot` for visualizing linear models with discrete or categorical independent variables. The `barplot` and `pointplot` functions have a similar relationship to `factorplot` that `regplot` has to `lmplot`, although `factorplot` can also draw boxplots. (The current `boxplot` API cannot be straightforwardly used with `FacetGrid`, but the addition of `kind="box"` in `factorplot` should avoid the need to break it). Here are some examples:

![factorplot_1](https://f.cloud.github.com/assets/315810/2174205/bd0c3020-95ac-11e3-957d-5c6ee333cbbd.png)

![factorplot_2](https://f.cloud.github.com/assets/315810/2174209/c674ea94-95ac-11e3-9228-5e58fb62d8a5.png)

![factorplot_3](https://f.cloud.github.com/assets/315810/2174212/e9393760-95ac-11e3-9013-13e97865b4a4.png)

![factorplot_4](https://f.cloud.github.com/assets/315810/2176841/abdbe7c0-95e1-11e3-9249-d77234487aa9.png)

- As a an internal detail, the implementation of the new plotting functions has been changed substantially, with the outward facing interface functions serving as very lightweight wrappers around new `_Plotter` objects. This has overall allowed for *much* cleaner code, and importantly, far better unit-test coverage of the internal computations. Going forward, this is how I would like all, or most, of the plotting code to work. We'll continue to test the docs using `ipnbdoctest.py` (which I also intend to separate out and release as a standalone tool, when I get a chance), but this relieves a lot of the pressure on the docs to also serve as a test suite.

The major remaining task is to update the docs to reflect the changes. In the meantime, my [Titanic](http://nbviewer.ipython.org/8224591) notebook shows off most of the goodies.

This is going to continue to get rounded out over the next few days/weeks, but all of the heavy lifting is done. The tests fail because it breaks the docs and I have not updated them yet, but all of the new code is well-covered by unit-tests, which pass.

Also, at some point the commit history got borked, but I didn't catch it until later. The diff is clean, so I'm inclined to leave it, but if there is a git guru who wants to help me drop the duplicated commits that would be excellent.

I'd definitely like some adventurous users to try this out before I merge to help me round out the corners of the APIs, and see if anything obvious is missing. @twiecki I know you were working on this branch before, it should be pretty stable now. @olgabot, there's stuff in here you've expressed interest in previously.

------

TODO's / subordinate issues

- [x] Improve test coverage for `*plot` functions involved in this commit
- [x] `factorplot` y axis is not labeled when plotting a count
- [x] The variable order in the `FacetGrid` legend does not respect the `hue_order` parameter
- [x] Cast label to string (to fix #107)
- [x] Move all `kws.pop()` code to `kws.setdefault()` to play better with map (to fix #108)
- [x] Complete docstrings for plotting functions
- ~~[ ] Add option to link linestyle and markerstyle to the `hue` variable in `factorplot`, etc.~~ Punting to #120
- [x] Update broken example notebooks
- [x] Write narrative docs