Apply component directive attributes after linking.

Previously we were building component directive attributes multiple times
in the case where the directive produced multiple child elements, which
is problematic since it violates the expectations of any decorator
elements being used on the component.

Now we instead wait until after the component has produced its child
elements and write all of the attributes onto the dummy root element,
finally copying all of the attributes onto each child element the
component created. This also has the marginal advantage of only evaluating
the attribute interpolations once, though this copying mechanism may need
some further optimizations later should profiling reveal that it's a
hotspot for templates making extensive use of components.