core: add support for an on-screen virtual keyboard for mobile devices

This adds a VirtualKeyboard QML element meant for use on mobile. As
Androids own virtual keyboard accessible via Qt.inputMethod() can't
produce single key-events needed for some activities it has been
decided to implement a simple row based virtual keyboard on app level.

Its layout by now must be set via the layout property which is row
based. The qwertyLayout property provides a layout for illustration
and default purposes. Just assign it to layout for testing. The
keyboard is invisible and disabled unless a valid layout has been set.
Once visible it can be opened and closed by pressing on the drawer bar
(all plattforms) or sliding up/down (on mobile platforms).

Appearance can be  further adjusted by the following properties:

property bool equalKeyWidth: true
property int rowSpacing: 5
property int keySpacing: 3
property int keyHeight: 35
property int margin: 5
opacity: 0.9

Keypress events are signalled via the keypress signal which passes the
label string set at layout initialization.

Although meant to provide key input for mobile devices, it also
supports desktop systems.

A very useful future enhancement is support for a shift key. This
would reduce the amount of keys for layouts that contain both upper
and lower case letters.
Gletters: use VirtualKeyboard on mobile platforms
virtualKeyboard, minor code formatting

Better mobile sizing using Applicationinfo.ratio
gletter, added a particle effect on letter shot