formatting, render() changes (indentation level of tags)

I changed some of the formatting for myself so that I'd personally read
it better. If you like the changes you can accept it.

I merged buildcontent() with render() for conciseness, seeing that
building content simply renders children.

I implemented indentation level for tags, so that the source code in
html will show up as properly formatted.
a bunch of formatting changes

class names, commenting, simplifying, etc.
Revert "a bunch of formatting changes"

This reverts commit 174d235d25e59a41f42d171b7638c87da8e5a4ec.
Revert "Revert "a bunch of formatting changes""

This reverts commit 39121eb6480f1b33731ea1468c7c39e2a197aad8.
Revert "Revert "Revert "a bunch of formatting changes"""

This reverts commit c6ee7152ff3b1093728c1bafe43396246cabacb0.