Clean up the associated widget when detaching a local root.

Subframes that were local roots had a corresponding RenderWidget
and WebFrameWidget created for layout/rendering purposes, but
this widget was leaked and never destroyed. This also caused
UaFs since stale pointers would be left around. This patch fixes
the renderer to actually destroy the widget associated with a
local root when it's no longer needed.

Since RenderWiget lifetime is already very complex, several
methods that were unnecessarily public have had their visibility
changed to protected:
 ▸ RenderWidget::Close
 ▸ RenderWidget::CreateWebFrameWidget
 ▸ RenderWidget::CreateWebWidget

BUG=419087

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

Cr-Commit-Position: refs/heads/master@{#339513}
3 files changed