Add cross-origin window and location wrappers (#291)

Closes https://github.com/dart-lang/sdk/issues/54443
Closes https://github.com/dart-lang/web/issues/247
Closes https://github.com/dart-lang/sdk/issues/54938

Since cross-origin objects have limitations around
access, wrappers are introduced to do the only safe
operations. Extension methods are added to get instances
of these wrappers.
5 files changed