Bug 962286 making sdk/window/utils isFocused export a dispatcher which now works for high level windows

I think we could probably get rid of `implement` here, using `when` instead. We didn't have `when` for method, so that's why we used `implement` for `isPrivate` and `viewFor`; but in order to use `implement` we add for each instance of the object the predicate, where we can simply have outside the object's creation something like:
```js
isFocused.where(x => x instanceof BrowserWindow, window => isFocused(getChromeWindow(window)));
```

Similar to what you did for the DOM window.
It seems also that `getChromeWindow` is exactly the same of `getWindowView`, that is also defined for `viewFor`; I would suggest to either just use one name to avoid confusion, or use here `viewFor` directly.