Replay/NmeaReplay: Also accept RMC sentences not provided by GPS

Glonass for instance uses "$GNRMC" for position data instead of "$GPRMC".
FlyingComputer.cpp: add 0.1 buffer for CheckClimbing

After landing, noise in altitude creates false climbing
and prevents detection of landing.  This eliminates
false climbing (must be > 0.1 m/s).
Tracking/SkyLines: Updated server IP

SkyLines was moved to a bigger server and has a new IP now. Until we use
DNS lookup we have to update the IP manually.
Computer/CirclingComputer: Improve circling detection when using some external NMEA devices

Work around trac issues #3360 and #3372.

For position devices providing several position sources (in this case
GPS and Glonass) and sending the data via the same physical port a proper
solution would need to separate the individual streams to "virtual"
ports. This would allow proper prioritization fallback while also working
in the case that both streams actually send differing data (the device
where the problem occurred actually simply seems to mirror identical
data to different GPS and Glonass NMEA sentences).
Merge remote-tracking branches 'apf/v6.7.x' and 'turbo/skylines-ip' into v6.7.x
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.
Computer/CirclingComputer: Fix initialization of turnrate calculation

Fixes regression introduced in commit 55807f789bc8d73f9ce36ad21363f8a78a483020

==6525== Conditional jump or move depends on uninitialised value(s)
==6525==    at 0x433508: CirclingComputer::Turning(CirclingInfo&, MoreData const&, FlyingState const&, CirclingSettings const&) (CirclingComputer.cpp:143)
==6525==    by 0x43B0CD: GlideComputerAirData::Turning(MoreData const&, DerivedInfo&, ComputerSettings const&) (GlideComputerAirData.cpp:296)
==6525==    by 0x43A096: GlideComputerAirData::ProcessVertical(MoreData const&, DerivedInfo&, ComputerSettings const&) (GlideComputerAirData.cpp:96)
==6525==    by 0x437C2E: GlideComputer::ProcessGPS(bool) (GlideComputer.cpp:132)
==6525==    by 0x4B7366: CalculationThread::Tick() (CalculationThread.cpp:97)
==6525==    by 0x670953: WorkerThread::Run() (WorkerThread.cpp:66)
==6525==    by 0x670244: Thread::ThreadProc(void*) (Thread.cpp:145)
==6525==    by 0x4E3A0DA: start_thread (in /lib64/libpthread-2.18.so)
==6525==    by 0x6D2158C: clone (in /lib64/libc-2.18.so)
==6525==  Uninitialised value was created by a heap allocation
==6525==    at 0x4C27D49: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==6525==    by 0x4E7513: Startup() (Startup.cpp:321)
==6525==    by 0x5541E1: main (XCSoar.cpp:142)
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.
Add libudev support

This adds optional libudev build system integration and the helper class
"UdevContext" for for initialisation and (thread safe) access to the
udev context.
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.
Plane/PlaneFileGlue: Don't try to read from non existing plane file

Valgrind reported an attempted read from file descriptor -1 if the
plane file did not exist.
fedora rpm related spec file