MTP: Fix error semantics for do_pull/do_push/do_make_directory

There are a bunch of semantic inconsistencies in the existing
implementations of these functions, when compared with the GIO
docs for making dirs and copying files.

This change fixes those problems, and also ensures that in the
pull/push cases, the destination is deleted at the last possible
moment, in the case of overwrites.

Also, certain other methods had their error code changed from
NOT_REGULAR_FILE to PERMISSION_DENIED when an operation is
attempted on a storage. This leads to less surprising errors
for users.

https://bugzilla.gnome.org/show_bug.cgi?id=734305