Update Frame to handle remote FrameOwners

This is a pretty straightforward refactoring patch, but I've also
annotated a bunch of places to address later with FIXMEs.

Since a lot of callers today expect HTMLFrameOwnerElement, this
patch also adds a temporary escape hatch with Frame::localOwner().
With time, usage should decrease and we can audit remaining uses
to make sure they're really needed.

BUG=346764
R=eseidel@chromium.org

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

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