PICARD-480: add few missing tags to ASF/WMA format
Use ASIN instead WM/ASIN, as discussed with ijabz.
If there's no ~length, use 0 as the fallback, not [""]

Otherwise, format_time raises an exception.
When "save_only_front_images_to_tags" is set, save only 1 front image.

Introduce helpers to clarify and fix code:
- is_front_image()
- save_this_image_to_tags()
- image_type_from_id3_num()
- image_type_as_id3_num()

Fixes:
- honor "save_only_front_images_to_tags" option for apev2 format too
- save only caa front image to tags when "save_only_front_images_to_tags" is set
  and image source is CAA, use 'front' flag from json.
  Other sources should have only 1 front image anyways.
Merge pull request #116 from zas/front_image

When "save_only_front_images_to_tags" is set, save only 1 front image.
Merge pull request #120 from zas/picard-480

PICARD-480: add few missing tags to ASF/WMA format
Remove leftover from #116
Better metadata box locking

The previous use of "selection_mutex" didn't really prevent race conditions.
The only thing really stopping them was the hackish "throttling" implemented
using self.updating and self.update_pending. If self.update was called while
another update was already in-progress, it'd set self.update_pending to True
and return, thereby reducing the chance that two update threads would execute
simultaneously.

Another thing to note is that race conditions here are almost impossible to
reproduce in CPython by default, because the interpreter only checks for
possible thread switches every 100 virtual instructions or so (configurable
using sys.setcheckinterval). Still, relying on such behavior bothers me.

The new attempt here reduces the need for locking considerably, because
instead of having a constant, shared self.tag_diff object, each update
thread creates its own and passes it on as the result.

So, selection_mutex is now simply used to protect the cached selection vars
while they're being set in _update_selection and read in _update_tags. As
mentioned, CPython's default behavior makes selection_mutex pretty much
unnecessary, but I don't think it adds much overhead given its limited use.

Tested on Mac and Windows.
Add @throttle decorator to reduce the number of GUI updates