Allow widgets to render other widgets

Way too much duplication with all the fixed aspect ratio embeds. Widgets can now build on top of other named widgets (`widgets.register(name, render, defaults)`).