Account for space used by iOS virtual keyboard when displaying drop downs / popups.
Refs #16730, fixes #16989.

Backport to 1.7 (available from 1.7.6).

Combined cherry pick of:

- a7e93cbc539a55918c774f2d031025cc22f6fab7 aka [30616]
- 4be135733e99980f17e2ff28b1ade31701023d08 aka [30619]
- 16a92a3f0c5fb6e18c3e58ea1e7099f6fb9e0696 aka [30621]
- b5d62d0a4f1f08b6e0d9ab3752c4d92a59aad5cc aka [30697]
- 5ffd2525cb469847db35f2efcf34bcb16776ce09 aka [31193]
- 95b49d82e39901e0ad0b1e318a39d81677fa0229 aka [31208]
- db50cb1e2ed4c191d7d2892d364271b0524d9f8c aka [31324]
Fixes #16730.  Have ComboBoxMenu trap mouse events and not touch events so that touch scrolling works.  Monitor click events and collapse redundant faux and real click events.

Fix problem with setTimeout (via defer) in IE8.  A setTimeout callback can fire even after a clearTimeout.

Backport to 1.7 (available from 1.7.6).

Combined cherry-pick of:

- 4cdad4262819979837e8a84425c9f1e2a5efe6a5 aka [30627]
- 113fbdf0de8e68e75d454de0ca24e68a67f459cd aka [30665]
Fixes #17388.  Don't call preventDefault for touch events.

Backport to 1.7 (available from 1.7.6).

(cherry picked from commit 0482b557c761cdd96a640123bfb86200f667797c)