Nuke QVariant, QString in favor of Python types
Fix tests in light of 6ff1f53
Remove type conversion functionality from Options

Automatically converting the type is problematic, because if we change
the type of an option later (imagine str -> list), it'll pass the old
value to the new type constructor before any upgrade hooks are run.
With 6ff1f53, there shouldn't be any need to convert the types anyway
because sip now does that for us.

The 'convert' functionality has been repurposed here for actual format
conversions. As it happens, the only Option that needs that is the
password field (rot13).
Convert QByteArray to unicode to fix exception
Do not try to upgrade option if not needed.

It fixes the following exception, when starting without any pre-existing configuration file:
```
  File "./picard/config_upgrade.py", line 106, in upgrade_to_v1_3_0_dev_3
    _s["preferred_release_countries"].split("  ")
AttributeError: 'list' object has no attribute 'split'
```
Moved info about the change to function's doc

As discussed with @mwiencek, we don't need to expose those to average user,
nor to mark those for translations.
Shorten lines using intermediate variables
Output hooks docstrings to log.debug

Example of output:
```
D: 10:57:46 Config upgrade 1.3.0dev1 -> 1.3.0dev2: Option "preserved_tags" is now using comma instead of spaces as tag separator (PICARD-536)
```
Merge pull request #1 from zas/listoptions

Improve hooks documentation and debug output, fix few issues
Revert 68bf155, use different solution

68bf155 was overzealous in removing the conversion routines because
although sip does convert the values for us, that doesn't help if the
wrong type is already saved (hence why we're converting it in the
first place...).

This adds back that functionality. To solve the upgrade hook issue,
a `raw_value` method is added to the ConfigSection class so that
`__getitem__` isn't invoked during the upgrade (which is what wrongly
converted the value to begin with).
Add .DS_Store to .gitignore
Return the default Option value on TypeError

Apparently Qt saves empty QStringLists as @Invalid, which sip converts
to None in Python. Which throws a TypeError when fed back into list.
Fix deadlock introduced in c50cdf7
Fix issue related to QSettings saving booleans as strings
Convert `caa_image_types` option from TextOption to ListOption
Convert `metadata_box_sizes` option to IntListOption type

New IntListOption is a ListOption which takes care about converting its elements to int
Merge pull request #2 from zas/listoptions

Convert more options to ListOption
Use a separate class for dealing with images

This new class stores the image data in a tempfile.TemporaryFile so we
don't keep the data for all images that are used somewhere in memory
anymore.

It also deals with saving images onto disk when the corresponding tracks
are saved (this was previously done by the File class). This removes the
ability to use tagger script in the cover file name (cf. the first line
of File._make_image_filename).
Use the same Image objects for all tracks of an album
Catch IOErrors and OSErrors when creating Images

They can happen if the disk is full or the user is not allowed to access
the folder where tempfile.TemporaryFile wants to create the file.