MetadataImage: store source of the image

Image may come from original file, online sources, or user drag'n'drop.
Keeping track of this information will help debugging and will allow
user to know from where images displayed in info dialog are coming.
InfoDialogCommon: add methods to remove tabs

Better than using index.
self.hide_info_tab() is far more explicit than self.ui.tabWidget.removeTab(0)
InfoDialogCommon: display images from file as well as downloaded ones

Source information is now displayed.
MetadataImage: implement __str__() to ease debugging
Metadata.copy(); reduce code redundancy, use update().