Implement format selection in YoutubeDL

Now the IEs can set a formats field in the info_dict, with the formats ordered from worst to best quality. It's a list of dicts with the following fields:
* Mandatory: url and ext
* Optional: format and format_id

The format_id is used for choosing which formats have to be downloaded.

Now a video result is processed by the method process_video_result.
Implement the max quality option in YoutubeDL
Do not handle format selection for IEs that already handle it
Default 'format' field to {width}x{height}

If width is None, use {height}p and if height is None, '???'
Implement the prefer_free_formats in YoutubeDL
Fix the default values of format_id and format
Merge remote-tracking branch 'jaimeMF/format_selection'
Fix test
Extend #980 with --max-quality support