[renderjson.js] Split out empty detection into its own function.
[renderjson.js] Build the tree lazily for massive speedups when there's large amounts of JSON.

We only recurse down the tree when someone clicks a disclosure. This means
we only end up building the DOM tree for the parts someone actually wants to
see, which is a huge win when there's a large amount of json data.
[renderjson.js] Re-indent.
[renderjson.js] Indent slightly less on disclosure lines so the {} and [] line up better.
[renderjson.js] Make the disclosure "icons" configurable.