linux: Fix batteries which report capacity, but not energy/charge

Many Android devices only export charge_full and capacity, but not charge_now
or energy_now. In that case, directly read the percentage (from the capacity
attribute) and calculate current energy from that.

Thanks to Seth Forshee for the original patch!

https://bugs.freedesktop.org/show_bug.cgi?id=68337
trivial: In test case of previous commit, check OnLowBattery property
Add temperature property for batteries

Linux's power_supply class supports a temperature attribute, which is
supported by many battery drivers. Add a new property to export this
information and support this property in Linux.

https://bugs.freedesktop.org/show_bug.cgi?id=68338

Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Signed-off-by: Martin Pitt <martinpitt@gnome.org>
Linux integration tests: add test for temperature

Add test case for exporting the temperature, as added in commit 03f67aa.

https://bugs.freedesktop.org/show_bug.cgi?id=68338
Linux: Fix warning in up_device_supply_get_design_voltage

This avoids filling the logs with the unnecessary warning line:
GLib-CRITICAL **: g_ascii_strcasecmp: assertion `s1 != NULL' failed
as seen in https://bugzilla.redhat.com/show_bug.cgi?id=847874 and
https://bugzilla.redhat.com/show_bug.cgi?id=863524

Signed-off-by: Martin Pitt <martinpitt@gnome.org>
Linux: More explicit warning when no voltage found

Add device full path in warning if retrieving design voltage fails in
up_device_supply_get_design_voltage(). Also helps diagnose bugs
https://bugzilla.redhat.com/show_bug.cgi?id=847874 and
https://bugzilla.redhat.com/show_bug.cgi?id=863524

Signed-off-by: Martin Pitt <martinpitt@gnome.org>
Make GetHistory() array order consistent

When requesting fewer history elements than we actually have, fix the
interpolation loop to not reverse the returned elements; this already does not
happen if we request more elements than available, which led to the returned
list order depending on the history size.

Now the first array element is always the most recent one. Update documentation
accordingly.

Add test case to reproduce the problem. We now add three sample points to be
able to request a subset and still assert its correct order, and make the
charge values be further apart to ensure correct interpolation.

https://bugs.freedesktop.org/show_bug.cgi?id=68384
trivial: Stop calling deprecated g_type_init()

When building with a recent enough glib (>= 2.36), don't call g_type_init() any
more. This is deprecated and causes ugly compile warnings.
linux: Check the battery of bluetooth input devices.

First, checking the device path. If it contains 'bluetooth', it is a bluetooth
devices. Second, checking if there is an input folder. If there is mouse
folder under the input folder, it is a mouse device. Otherwise, it is a
keyboard device.