Support more types of attribute inputs
Vastly simplify render()

Also allows #in to contain either a render array or an
element array containing renderables