MTP: Initial implementation of MTP backend.

Currently just does basic entity enumeration, but supports multiple
devices and storages.

Does not support download and upload yet.
MTP: Refactor query_info, implement do_pull. Clean up cruft.
MTP: Basic implementation of all remaining calls.
MTP: Improve Error handling.
MTP: More error handling cleanup.
MTP: Make gphoto2 monitor skip MTP devices.
MTP: Add stub gudev event handler.

Will be used to detect device plug/unplug events.
MTP: Add missing mutex and free calls.
MTP: Restructure more error handling.
MTP: Tidy up error handling in do_push.
MTP: Initial MTP volume monitor implementation.
MTP: Rework backend to work with volume monitor.

With the volume monitor in place, the backend is now one per device,
so we can throw out all the device enumeration and tracking logic.
MTP: Implement udev event handler to exit on unplug.
MTP: Update .gitignore
MTP: Tidy up.
MTP: Fix crash when called with no progress callback.
MTP: Print error stack when push or pull fail.
MTP: Add conditional configuration against libmtp.
MTP: cleanup
MTP: Add monitoring.