checkbox.dbus.udisks2: Drop all DBus types early

DBus API has an annoying collection of types that make reading and
comparing data more difficult than it otherwise would. I found a few
cases where some of the code failed to compare a regular string to an
DBus string so I've decided to drop the DBus type signatures as early as
possible.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
checkbox.dbus.udisks2: Add UDisks2Observer.on_properties_changed signal

This signal is being fired when any UDisks2 property changes value. It
complements the current InterfacesAdded/InterfacesRemoved signals and
allows client applications to fully track the current up-to-date state
of any property.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
checkbox.dbus.udisks2: Add UDisks2Model.on_change signal

This signal gets fired _after_ the model discovered and applied any
changes. This signal is fired after applying state changes from
UDisks2Observer signals (interfaces_added, interfaces_removed,
properties_changed)

Due to the limitations of the PropertyChanges signal we need to reload
the full state whenever any property was changed or invalidated. This
workaround allows us, however, to properly detect _all_ state changes.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
scripts/udisks2_monitor: Display property changes

All property changes are displayed, backed by the new
UDisks2Observer.on_properties_changed signal. Unfortunately none of the
properties are tied back to an object on the bus at this time.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
scripts/removable_storage_watcher: Reword the timeout message

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
scripts/removable_storage_watcher: Handle KeyboardInterrupt

This makes apport happy and gives the prevents the user from seeing a
pointless backtrace. When the script is interrupted this way it exits
with an error code so that any tests that depend on it would fail.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
scripts/removable_storage_watcher: Add support for --verbose

Running in verbose mode displays all logging.info() calls. It could be
useful for validating the script in cases when the outcome is unexpected
but full debugging logs are not something easy to understand or parse
through.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
scripts/removable_storage_watcher: Add DeltaRecord for representing device changes

This type encapsulates the direction of the change (either + or -) and
the value of the change (either an interface change or a property
change) along with all the details.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
scripts/removable_storage_watcher: Add udisks2_objects_delta

This function generates the difference between two snapshots of udisks2
objects. The result is a generator of DeltaRecord objects.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
scripts/removable_storage_watcher: Add format_bytes() for rendering disk sizes

This simple function converts disk sizes to human-readable strings

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
scripts/removable_storage_watcher: Add is_memory_card()

This function checks if a drive looks like a memory card. This is sadly
based on heuristic as UDisks2 cannot really tell us this explicitly
(despite having the right means to do it)

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
scripts/removable_storage_watcher: Replace the implementation of removable_storage_watcher

This is a large change. Instead of listening to all the detailed signals
and trying to understand when 'insert' or 'remove' had occurred. This
was not really optimal as the logic was complex and could not capture
everything we wanted (such as filesystem becoming mounted).

The old logic is entirely removed in favour of the new mehanism that
builds a delta between the initial (reference) objects exposed by
UDisks2 and the actual objects after each change.

The delta is then fed to a validator that has all of the "business
logic" and is easy to verify or modify. The code is also symmetrical,
behaving exactly the same for both insertions and removals.  The only
thing that differentiates this is the direction of the delta.

This code also has one TODO, related to USB 3.0 detection which is not
supported in UDisks2 and must be added later. I will first prototype a
solution for that as right now all I have are hints on where it is.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
scripts/removable_storage_watcher: Summarize the device delta in verbose mode

This patch can be dropped if necessary. All it does is adds a summary
function that prints (via logging.info()) summary of all the changes in
each _on_change() call. The main purpose of this method is lightweight
debugging that is easier to understand as compared to the full debugging
log.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
Added singletouch and multitouch tests to touchpad suite.
Removed "1." from VERIFICATION part of job definitions when there is only one verification.
Added changelog entry.
Added nontouch and multitouch tests to touchscreen suite.
Fixed filter_templates arguments for multitouch tests.
jobs/piglit.txt.in: fixed the texturing job that was incorrectly using the
word texturize, causing the tests to not run (LP: #1060432)
Merged multitouch touchpad/touchscreen tests by Marc Tardif