So I was thinking about this a lot yesterday, and the `target` property actually only makes sense within the scope of a selection. So in this case our selection is `root_` and the `target` points to another container within that root. If we allow rendering to targets without a root selection then target-based rendering won't work with multiple graphs on the page b/c it loses it's scope. We've only managed to avoid this problem by chance.

So I basically made the `selection` param passed to `components.*.render(selection)` required in all cases, and the `config.target` (aka sub-selector) is now optional. That being the case, I now always pass the `root_` to `component.render()`. The extracted code in `d3-ext.util.applyTarget` handles narrowing to the sub-selection if a target is specified, otherwise it just renders to the passed `selection` param.

TLDR
`selection` and `target` used to both be optional. Now `selection` is required when calling `render()` to avoid scoping issues.