Make chart.update methods consistent

Each model seems to have it's own implementation of chart.update, which makes the interface inconsistent and unpredictable.  

This pull request does the following

1. Adds beforeUpdate event
2. Changes the update function to call dispatch.beforeUpdate
3. Changes container...call(chart) to same implementation for each chart.update method.

```javascript
chart.update = function() {
    dispatch.beforeUpdate();
    container.transition().duration(transitionDuration).call(chart);
};
```