MTP: Refactor read path in preparation for supporting normal files.

The existing logic for reading only works for preview icons, but
I'm about to add support for reading normal files using special
MTP calls. For that, we need the read calls to work for both cases.

To achieve that, we need to make reading more stateful.

https://bugzilla.gnome.org/show_bug.cgi?id=695984
MTP: Use android extensions to support in place read of files.

Allows for opening files directly on the device and reading from them.

https://bugzilla.gnome.org/show_bug.cgi?id=695984
MTP: Use android extensions to support in place write to files.

Allows for opening files directly on the device and writing to them.

https://bugzilla.gnome.org/show_bug.cgi?id=695984
MTP: Use normal filenames in paths.

It's becoming too fragile to use item IDs as path elements. Beyond
the problems with clients that don't use copy names, there are a
bunch of situtations where a path sent by a client could be an id
or a filename and it's not 100% possible to tell them apart.

When the initial feature set of very limited, this wasn't much
of an issue, but with direct read/write support, we are now
exposed to a huge set of clients (as opposed to just file managers)
with no ability to recognise copy names, and which generate a lot
of mixed form paths, so we're past the tipping point where it's now
less of a hassle to maintain a name to id mapping.

https://bugzilla.gnome.org/show_bug.cgi?id=696016
MTP: When removing cache entries, remove children too.

If a directory is deleted or renamed, everything inside it has to
be invalidated in the cache too. The simplest way to do this is
to remove by string prefix match. This will remove too many entries
if there are filenames that match the prefix but aren't actually
children. This is ok as the cache will be repopulated as needed
and operations that invalidate the cache are infrequent.

https://bugzilla.gnome.org/show_bug.cgi?id=696016
MTP: Clear previous cache entries when refreshing a directory.

https://bugzilla.gnome.org/show_bug.cgi?id=696016
MTP: Clear cache and emit delete events when an object is removed.

If an object is reported as removed by the device, remove it from
the cache and emit a delete event for it.

https://bugzilla.gnome.org/show_bug.cgi?id=696016
MTP: Handle overwriting of files in do_push correctly.

If a file copy is requested without OVERWRITE but the destination
exists, return G_IO_ERROR_EXISTS. If OVERWRITE is requested, then
delete the destination before the push.

https://bugzilla.gnome.org/show_bug.cgi?id=696163
Daemon: Ensure monitors are not prematurally finalized.

If a monitor is being cleaned up due to the backend disappearing,
we could see the monitor being finalized as a result of removing
a subscriber, leading to a segfault as it continues to access
its internal state.

https://bugzilla.gnome.org/show_bug.cgi?id=696479
MTP: Avoid introducing new translatable strings.

The last set of changes unnecessarily introduced new strings for
translation. This change replaces them with existing strings.
MTP: Fully avoid untranslated strings.

Fixed one typo from the first fix, and re-replaced one string. My
first choice had not really been translated (though it was present
in some of the existing translation files)
MTP: Fix compilation with libmtp 1.1.5

One of the 1.1.6 specific calls was missing its #ifdef guard.
Backport: Fix hopelessly short timeout in file transfers.

The client code was using the default 25 second timeout for
file transfer operations, which is far too short.

This is fixed in 1.15.x
Ubuntu: Shared libgvfscommon

This is needed to allow built binaries to be drop-in replacements
on an Ubuntu system.
MTP: Handle overwriting of files in do_pull correctly.

As with do_push, it's necessary for us to explicitly detect the
OVERWRITE case and handle it appropriately.