Add serial_num/connection_id handling and save/restore last device

This patch performs several correlated changes:
- Make use of sdi->serial_num and sdi->connection_id in
format_device_title()
- Add a Device::get_device_info() method that returns a map
with all device identification information that's available
- Add a DeviceManager::find_device_from_info() method which
returns the best match to a given set of device infos
- Add save/restore code to the MainWindow class that makes
use of the aforementioned maps to identify the currently
selected device.
Fix double-free issue in File::create

Triggered when opening a file from the command line.

During startup Sigsession::set_default_device calls Device::use which
loads a global _sr_session, then as part of file loading the
File::create method is called which treats _sr_session as a temp
variable (loaded then immediately released), finally a Device::release
releases the (differently allocated) global _sr_session again causing
the double free.

Given File::create is only using the sigrok session temporarily within
its function scope, this change gives it its own temporary session
instance.

This fixes bug #405.
Use libsigrok C++ bindings (patch version 7).
Update android build after bindings rewrite

The sigrok bindings depend on libffi.so, which is an unversioned shared
object, so add it to the whitelist of libraries to install into the APK.
test/CMakeLists.txt: Update file list.
INSTALL: Clarify requirements.

PulseView depends on the libsigrok C++ bindings (not directly on
the libsigrok C library itself).
Make use of Device::display_name

Currently, DeviceManager::device_description() is used to determine
how a device should appear in the device selector combobox. This is
problematic because bug #285 requests that a device should show
the extra information only when multiple such devices are present.
Without having access to all devices attached to a particular driver,
this cannot be solved.

For this reason, I came up with a slightly different approach:
Device::display_name is a string attached to every device which
contains the string that repesents the device in the combobox.
GUI functions such as DeviceManager::driver_scan() populate this
using DeviceManager::build_display_name().

This has three advantages:
1) bug #285 can easily be solved
2) device display names are only recalculated when necessary
3) another bug regarding SamplingBar::set_device_list() can be fixed
   (see following commit for details)

Of course the disadvantage is that Device::display_name is only
used by the GUI and as such should ideally not be part of SR. Alas,
solving it in the presented fashion is the best solution I can
currently think of.
Use list instead of map for SamplingBar::set_device_list()

Because a map does not guarantee the order in which entries are
retrieved when iterating over all elements, the combobox entries
are sometimes out of order, even if the DeviceManager supplies a
sorted list.
In order to fix this, this commit replaces the map by a list.
This is now possible as every device's display name is part of
the device itself and no longer needs to be supplied separately.
Fix device removal in DeviceManager::driver_scan()