Added basic support for stacked charts

You can set the 'stacking' attribute on your chart class to be, e.g.
'percent' and the plot options will reflect this automatically. To do
this we needed to switch to using defaultdicts rather than plain dicts
and being a bit more careful in calling .update in subclasses.