[storageplugin] fix crash in DeleteObject with handle=ALL

The deleteItem handler tried to loop over a QHash while
removing items from it, and this doesn't work unless you use
special calls for the removing. (Which is awkard since the
removal is done in deleteItemHelper).

Fixed by looping over a copy.

This bug was exposed by the storage-test unit test.
[storagetracker] Fix DeleteObject return value for PartialDeletion

The deleteItem function had wrong logic for when to return a
PartialDeletion response code.

Also, the unit test for some unexplained reason expected there
to be 1 item left after deleting all items. I don't know how
that ever worked. The best explanation I can think of is that
the root directory shouldn't be deleted because that would leave
m_root a dangling pointer. I added code to prevent that, which also
makes the test pass.
refactor: add sendContainer to unify duplicated code

The same logic for constructing and sending an MTPTxContainer was
repeated in dozens of places.
fix some problems uncovered by the refactoring
[mtp] Send OperationNotSupported responses where needed

Some not-implemented operations weren't sending anything back,
which caused a timeout and protocol reset when they were used.
They should return an OperationNotSupported response instead.
[mtp protocol] Implement GetPartialObject request
Merge pull request #17 from amtep/master2

Make image scanning over MTP go faster