Fix dynamic aspect ratio support

Moving the responsibility for the correct aspect ratio to a
pseudo-element broke the ability to dynamically set the ratio via inline
styles. This change uses an empty element rather than a pseudo-element.

It also removes the assumption that an image or embed (e.g., iframe)
will be a child of the component. This makes it more flexible and a more
well-behaved component.