'Add children and change attributes on this tag.
This is implemented using __call__ because it then allows the natural
syntax::
table(tr1, tr2, width="100%", height="50%", border="1")
Children may be other tag instances, strings, functions, or any other
object which has a registered flatten.
Attributes may be \'transparent\' tag instances (so that
C{a(href=transparent(data="foo", render=myhrefrenderer))} works),
strings, functions, or any other object which has a registered
flattener.
If the attribute is a python keyword, such as \'class\', you can add an
underscore to the name, like \'class_\'.
There is one special keyword argument, \'render\', which will be used as
the name of the renderer and saved as the \'render\' attribute of this
instance, rather than the DOM \'render\' attribute in the attributes
dictionary.'

def __call__(self, *children, **kw):

    self.children.extend(children)
    for (k, v) in iteritems(kw):
        if (k[(-1)] == '_'):
            k = k[:(-1)]
        if (k == 'render'):
            self.render = v
        else:
            self.attributes[k] = v
    return self
