Refactor of clusteredheatmap

Here you go! Thanks for being patient with my awful code from before. This is a complete refactoring, so the dendrograms and linkage matrices are getting calculated separately, and `DendrogramGrid` is completely naive to all calculations.

So far this just has basic functionality, I removed some concepts for simplicity:

* `data_na_ok` or masked data, allowing for NAs.
* `{row,col}_labelsize`: fontsize of the row and column labels
* `fig` : user-provided fig. user can provide just `figsize`
* `title`, `title_fontsize`: user can do this on their own using the `DendrogramGrid` instance
* Multiple levels of color labels for rows and columns

If anyone is willing and able to figure out how to make these work elegantly, please do! I couldn't figure it out.

Other things of note:
* Added the feature of user-specified `{x,y}ticklabels` to `heatmap` and `_HeatMapper`.
* Moved all `{col,row}_kws` into explicit keyword arguments, e.g. `{col,row}_linkage` because I felt they were too hidden, and it's not like there's another function you can refer to, to see the possible inputs (like you can with `joint_kws` in `jointgrid`)
* Naming is fluid. I just came up with names that made sense on the spot, and am open to more explicit or understandable naming.
* I haven't completely tested all the combinations yet (!!) so any help here is very much appreciated

Todos (copied from https://github.com/mwaskom/seaborn/pull/325):

- [ ] Tests
- [ ] Tutorial documentation
- [ ] Gallery example(s)
- [ ] Release notes
Yeah I would keep `fastcluster` out of the "minimal" testing deps so that Travis gets run without it at least once. As for testing the scipy version on the builds that do have fastcluster, you could always move the computation into sub-methods `_estimate_linkage_fastcluster`, `_estimate_linkage_scipy` and just have the `try ... except` wrap calls to those methods so they can be tested directly.