Android: Move code to enable Immersive Full Screen Mode to new helper function

Introduce new helper function "enableImmersiveModeIfSupported".
Android: Explicitly enable Immersive Full Screen Mode in onCreate

In some cases, the "onWindowFocusChanged" function is not called when
the app is started, and Immersive Full Screen Mode was not enabled then.
Calling enableImmersiveModeIfSupported in "onCreate" seems to solve this
issue.
Android: Revise Bluetooth GATT port driver

The Bluetooth GATT driver is fundamentally revised to solve two issues:
* Write data in 20 byte large chunks at maximun. Most GATT peripherals
do not support GATT characteristic values which are larger than 20
bytes.
* Implement workaround to avoid race condition when data is sent and
received at the same time. See code comment in the write() function.
Add support for Mesa KMS

This makes it possible to use KMS based EGL contexts for Mesa drivers.
The libdrm and libgbm libraries are being used.
define HAVE_DYNAMIC_MAPBUFFER when compiling with Mesa KMS support and OpenGL ES

HAVE_DYNAMIC_MAPBUFFER is required when the Mesa GLES libraries are
being used.
Enable mouse cursor when compiling with Mesa KMS support
Add EGL_*_SIZE definitions to EGL attributes for Mesa KMS EGL initialisation

For some reason, it is necessary to define EGL_RED_SIZE, EGL_GREEN_SIZE,
EGL_BLUE_SIZE and EGL_ALPHA_SIZE for Mesa KMS EGL initialisation.
Fix Clang 3.5 compile warning

Clang 3.5 emits a warning that the expression "event.text.text" always
evaluates as true. Therefore remove this check.
Fix getSecondsOfDay function

Correct NSDate timeIntervalSinceDate call, so it does not always return
zero. This also fixes #3387.
Fix for #3402 (vertical mouse movement inverted)

The /dev/input/mouse protocol handles upward movements as postive
values, an downward movements as negative values, and the the MergeMouse
class interprets the other way round. Therefore invert the vertical
difference value received from the kernel to be compatible.
Always call tcflush when a keyboard event is received

Discard all data on stdin to avoid that keyboard input data is read by
the executing shell. This fixes #3403.
fedora rpm related spec file
Merge remote-tracking branches 'felix/android', 'felix/kms-mesa' and 'jmlich/master'
util/UTF8: add SequenceLengthUTF8()
po: update Japanese translation
po: update Swedish translation
po: update French translation
po: update Spanish translation
po: update German translation
LanguageGlue: add support for Simplified Chinese