Add missing host-node and host-rhino rules to has.js

Fixes #17741.

(cherry picked from commit ce4704766da86485459d9b16514fe7d2e48a6bda)
(cherry picked from commit fd52c9617a7191983427172335f71b2211db383e)
(cherry picked from commit d4c0bbf60e25fe9dfd05668260f8225042b6856f)
Correct detection of focusin support

Fixes #17599

(cherry picked from commit e245ce5c80b85351642fd1ffc18a2d77bbbb0770)
(cherry picked from commit ca391f932e3a3f032dd8b84566c4176857eb8ac3)
Improve focusin detection support

This change prevents unintentional scrolling and unfocusing of
whatever element was in focus before the feature detect in browsers
that need to do the long feature detect.

Adds test case.

Refs #17599

(cherry picked from commit 2536e5cd0935cc7356d584bab6ac2c73d3ad6164)

Conflicts:
	tests/on/on.js

(cherry picked from commit f774568707ea95b9a56bf646b2ce46e1c57907f8)
Position test element so it is actually fixed to viewport

Fixes #17626

(cherry picked from commit 65e989efbcda628e72c9616faf11d480aacebf2f)
(cherry picked from commit ab088a9741a6383495a20bc34e84403e2962ed03)
Just use onfocusin as a detection test for focusin support

Due to various restrictions on what dojo/on can depend on,
and a desire to resolve this issue so that a release can be issued,
simply check for a matching event key on the has-test element.
This stops focusin/focusout from being used in WebKit and Blink
in lieu of event capturing, which is not ideal, but is not any
worse than what was happening before.

Refs #17599.

(cherry picked from commit 81e1c7d6b52e2f42a3bbc8259f875bd83aaa8541)
(cherry picked from commit df47713a809bb5dfdd9a6dad472b6693c501b866)