Fix possible segfault in IOThread::interrupt()

Thread executing the run() method could set m_handle to zero after the
check in IOThread::interrupt(), causing a crash in pthread_kill called
with null handle.

Mutex m_handleLock now guards access to m_handle. The common logic was
moved into IOThread::run() that calls virtual method execute(), which is
to be implemented in subclasses instead of QThread::run().
Merge pull request #21 from xhaakon/iothread-segfault

Fix possible segfault in IOThread::interrupt()
Do all the metatype registration when initializing MTPResponder
Export removable storage only when mounted
Check storage root directory existence only when removable

The current StoragePlugin has some code for creating m_storagePath if it
doesn't exist yet (and cleaning it up after). We don't use that feature
but we might as well not break it.
Move fsstorage configuration files to /etc/fsstorage.d

Configuration is now one file per storage, StoragePlugin API was changed
to offer the list of configuration files that are available.

Function createStoragePlugin now gets a path to configuration as
an argument.
Implement FSStoragePlugin::getThumbCompressedSize()

When thumbnail is not available, we request its creation and return zero
size. Later, when thumbnailer notifies us that the image is ready, we
generate ObjectInfoChanged event that makes initiator reload the object
info dataset with the updated thumbnail size and subsequently download
the thumbnail data with GetThumb request.
Implement GetThumb request
[mtp] Bugfix to GetPartialObject request

The logic for sending a partial object in segments only worked when
startingOffset was 0 because of a mismatch with what sendObjectSegmented
expected.
[mtp] Fix GetObjectHandles request with multiple storages

The request was returning duplicate handles when iterating over all storages.
Move m_storageId from FsStoragePlugin up to ancestor StoragePlugin
FSStoragePlugin: reduce scope of txCancelled variable
Fix array index out of bounds in StorageTracker::copy()

Result row leftover from previous query had only one item, causing
resultSet[i][1] to fail.
Fix FSStoragePlugin::copyObject() for cross-storage file copying
Check free space in FSStoragePlugin::copyObject()
[ptp] Use MTP_ASSOCIATION_TYPE_GenFolder for directories
[ptp] Stable order of object handles

This fixes a client problem where it showed only a random selection
of pictures from the device.
[ptp] Terminate data transfers according to PTP spec

PTP requires a 0-byte packet to be sent after a data transfer
if the transfer size was a multiple of the packet size.
This fixes a problem where certain files could not be imported
by iPhoto.
StoragePlugin::copyObject(): NULL destinationStorage means the same storage

Also refreshed method documentation a bit.
Merge pull request #24 from xhaakon/interstorage-copy-object

Fix FSStoragePlugin::copyObject() for cross-storage file copying