Add heatmap function for plotting rectangular data

This build off of @olgabot's work in #324. I refactored the big function into a Plotter object that is easier to test, added some functionality (including annotating each cell with the numeric value), and fixed a couple of bugs.

Here's a simple example:

```python
df = pd.DataFrame(np.random.rand(6, 4))
sns.heatmap(df, annot=True)
```
![heatmap](https://cloud.githubusercontent.com/assets/315810/4560596/497f8bda-4ef6-11e4-8698-a945c6c23ac9.png)


I still need to write tests, which I am hoping to get to during a flight today.