iOS: update keyboard rectangle when scrolling the screen

If the keyboard itself does not change position on UIScreen,
it will change position on QScreen when scrolling the root
view up and down. This change will update the keyboard
rect whenever we scroll the screen.

Change-Id: I9bda2ab5b5e4970f488d3e69e44cf58e273f8fcd
iOS: scroll screen from current visual position

When changing bounds of a view, UIView will update immediatly, while
its presentation layer will animate. If changing bounds while
an animation is already ongoing, the new animation will start from
the bounds of UIView, not the presentation layer. To prevent the screen
from jumping in such cases, we let a new scroll animate from
whereever the presentation layer is at.

Change-Id: I44512e2fea26f217e7cfb855665cc96c0ffdfeab
iOS: remove unneeded bool block

We used m_ignoreKeyboardChanges to ensure that we didn't
scroll the screen up and down and emit signals when
we applied the resign/become first responder work-around
to update input traits (input method hints).

A better way is to instead delay processing the
keyboardDidChangeFrame notification.

Change-Id: If39284053a1bd3b4f31343b0d32c0366c093869b
iOS: implement 'close keyboard' gesture

Before this patch there were no way for the user to hide
the keyboard on iPhone for multi-line edit fields unless
the app had a separate button added for it. And even that
would be problematic since we scroll the screen (and
perhaps the button) to track the cursor.

This patch implements a gesture that resembles the 'hide
keyboard' gesture that UIScrollView implements on iOS 7.

Change-Id: I1c0d9c88ff1f5430587a49591f165b9708e5dc60