Simplification: get rid of objecthandle reuse across sessions

It isn't used, and doesn't make much sense. The only thing it does is
create a risk that objecthandles will eventually wrap around.
Refactor: modernize enumerateStorages()

New-style signals, Qt-style indentation
bugfix in enumerateStorages: get largest puoids from all storages

With multiple storages involved, it's important to get the largest
puoid of all before starting enumeration in any of them.
Refactor: nicer syntax for comparing MtpInt128 objects
refactor: modernize initStorages()
storagefactory emits storageReady() when all plugins are ready

This a refactoring in preparation for doing the storage enumeration
asynchronously. In this commit the signal is hooked up but nothing
is done with it yet.
cleanup: fix compiler warning
[mtp] Do the file scan in the background

Some initiators (OS/X) didn't like that we took time for the file scan
while handling the GetStorageIDs request. Work around it by doing the
scan asynchronously while the protocol starts up, then only delaying
a request if the results of the scan are actually needed.
code improvement suggested in review
Merge pull request #50 from amtep/jb12235

Do the storage enumeration (file scan) in the background in order to keep OS/X from becoming impatient.
[storage] remove HalProxy

HAL passed away, never quite loved. Rest in peace.
[tests] remove some Qt4 legacy in a project file
[fsstorage] remove unused m_rootFolderPath

FsStoragePlugin::m_rootFolderPath wasn't used anywhere, likely being a
duplicate of StoragePlugin::m_storagePath.
[fsstorage] remove unused m_uniqueObjectHandle

The member is assigned but never read. In unit tests, use a static
variable to provide object handles when StorageFactory isn't available.
[storage] move StoragePlugin::m_storagePath to FsStoragePlugin

This protected class member doesn't play any role in the abstract
interface of a storage plugin. In general, for some potential kinds of
storage plugin, implemented in the future, the concept of "storage path"
might not even make any sense. Consequently, let's move the member to
the place of its use, which is FsStoragePlugin.
[fsstorage] ensure absolute FSStoragePlugin::m_storagePath

User may write the storage path in /etc/fsstorage.d/*.xml with extra
slashes or '.' and '..' elements. We want to always have the storage
path in the absolute format to allow correct string comparison etc.
[fsstorage] use unique filenames for PUOID databases

All instances of FsStoragePlugin were using file ~/.local/mtp/mtppuoids,
overwriting each other's data. The new naming scheme is

 mtppuoids-{name}-{fsuuid}

Where name is a storage name attribute from its configuration file in
/etc/fsstorage.d and fsuuid is a UUID of storage's filesystem.

UUID alone is not enough for unique distinction since different parts of
a single filesystem may be exported as different MTP storages. In that
case, user-configured storage names ensure unique database filenames.
[fsstorage] remove legacy PUOID database

The file used in previous versions of buteo-mtp now only wastes device
memory.