Handle visibility changes more robustly

Since Angular can change visibility states during digest changes we
check to see if the chart is visible whenever the digest runs with a
general $watch. We also check the size in case the area has changed in
size in some way.

Also a small fix for d3-pie to keep it from drawing multiple charts
during redraw.