Improve metadata image handling

Keep full image type from CAA/MB (ie. back+spine)
Saving those as back-spine.jpg is now possible
Introduce main cover concept, since front type wasn't clear enough.
Main cover is:
- first image with front type
- first image
- there's only one main cover
- it is used in place of "front", even though it is often the same,
  especially when only one image is found

To ease things a new class MetadataImage was added and is now used for Metadata.images elements.
Naming of image files (when saved to local) was modified, and now use a callback
function to generate it (mostly because it depends on main cover and options set).
Minor cleanup
Metadata.look_for_main_cover() renamed to update_main_cover()
Add Metadata.get_main_cover()
Add types, description under image in track cover infobox

Filename selected appears as tooltip
Main cover has text in bold
CoverArtBox: use Metadata.get_main_cover()
Fix up adding an image as cover art using drag'n'drop

Metadata.add_image_main_cover() forces the added image to be the main cover.
User's choice prevails over assumptions we are making when downloading cover art.
Metadata.update_main_cover(): fix up code

It was not working as it should, new code is easier to understand too.
Enable Informations dialog for albums, used to display metadata images.

It is using existing InfoDialog code, moved to a common class.
For now, first tab is just hidden as there is nothing to display in.
In Artwork tab, all metadata images associated with the album are shown.
Slight change in behavior is that pressing Informations button while an album is
selected was showing 1st track information, now it should album info.
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().
MetadataImage.get_source_as_text() will handle human readable form of the source