Build zoomable and pannable SVG canvas

@justinvdm Are you thinking of not using the `enter()`/`exit()` selections at all in the components? Also what would the `selection` that gets passed on to the component hold? The `canvas` or the `.conversation` list with data bound?