Implement WebFrame::swap.

This just updates a bunch of pointers so a WebRemoteFrame can replace a
WebLocalFrame node, or vise versa. This does not currently preserve the
JS global context, which will be addressed in future patches.

BUG=346764
R=eseidel@chromium.org

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

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