Renders the HTML builder `element` and it's children to a string.
    Example::

        >>> print(
        ...     render(
        ...         html.form(action='/search', name='f')(
        ...             html.input(name='q'),
        ...             html.input(name='search_button', type='submit')
        ...         )
        ...     )
        ... )
        <form action="/search" name="f">
          <input name="q" />
          <input type="submit" name="search_button" />
        </form>

    The :func:`render` function accepts the following arguments:

    :param element: element created through the `html` builder instance, a list
                    of such elements, or just a string.
    :param level: indentation level of the rendered element with a step of two
                  spaces.  If `level` is `None`, the `element` will be rendered
                  without indentation and new line transferring, passing the
                  same rule to the child elements.

def render(element, level=0):
    """Renders the HTML builder `element` and it's children to a string.
    Example::

        >>> print(
        ...     render(
        ...         html.form(action='/search', name='f')(
        ...             html.input(name='q'),
        ...             html.input(name='search_button', type='submit')
        ...         )
        ...     )
        ... )
        <form action="/search" name="f">
          <input name="q" />
          <input type="submit" name="search_button" />
        </form>

    The :func:`render` function accepts the following arguments:

    :param element: element created through the `html` builder instance, a list
                    of such elements, or just a string.
    :param level: indentation level of the rendered element with a step of two
                  spaces.  If `level` is `None`, the `element` will be rendered
                  without indentation and new line transferring, passing the
                  same rule to the child elements.
    """

    if hasattr(element, 'render'):
        return element.render(level)
    elif isinstance(element, basestring):
        return _render_string(element, level)
    elif hasattr(element, '__iter__'):
        return _render_iteratable(element, level)
    elif element is None:
        return ''

    raise TypeError('Cannot render %r' % element)