Refactor RenderTreeBuilder and expose special <dialog>

This refactors the RenderTreeBuilder so it's easier to see what's going on
inside the nextRenderer() and parentRenderer() methods. It also exposes that
<dialog> is trying to be special which I think is a mistake. Either dialogs
should always be in the top layer, or they should not have the ICB as their
containing block. We shouldn't be adding special cases for a particular
element to the core render tree construction code.

Review URL: https://codereview.chromium.org/118333005

git-svn-id: svn://svn.chromium.org/blink/trunk@164662 bbb929c8-8fbe-4397-9dbb-9b2b20218538