getting per-component templates working

now, each component can define custom templates (erb) to use to render
the content. By default, there are handlers for Hash, Array and String,
but a custom handler can be made for your component.