chartLayout now adheres to the general update pattern

> Since [0] is always bound, does exit() ever get called?

Good question; it's unlikely, but possible - for example, if the component was called on an element which contained two `svg` elements, then one would be in the `exit()` selection and removed:

```html
<div id="chart">
    <svg></svg>
    <svg></svg> <!-- This SVG would be in the exit selection -->
</div>
```

That's a contrived example; I don't think that would happen very often in real-world usage. Maybe it's reasonable to impose the restriction that a selection passed to chartLayout should not contain any `svg` elements, unless they're generated by chartLayout? Perhaps adding a class to the SVG would narrow down the chance of selecting an irrelevant SVG by mistake.

Interestingly, when D3 binds data in a similar way (axis component, for example), the exit subselection is not used. Maybe the use of `exit().remove()` isn't necessary, I don't think it's doing much harm though - do you have any views on this? :-)