Partial work towards #30

A mega-PR that includes a whole bunch of changes related to intelligent charting (#30):

1. Added analysis module for analyzing JSON, which uses heuristics currently to detect common types.
2. Added interface for charts, which enables generation, perturbation, serialization, and rendering of chart options.
3. Added implementation for `PieChartOptions` based on NVD3.

Once thoroughly tested / debugged, this is expected to become the pattern for other chart types (line, bar, etc.).

Review by @joneshf 
Will `render` play nicely with things like react? I don't want to be tied to react (or any rendering engine in particular) but I think we should try to interop with it as it might be a while until we move away completely. 

I know that currently the charts dump things directly on the dom, but that was a hack to get things working. It seems we might be better off if we could just return an html or string or something, and let someone further down the line handle rendering how they want.

Thoughts?