Cover art support

- [x] implement database scheme
- [x] search for embedded cover
- [x] search for cover in track directory
- [x] save covers in disk cache
- [x] search for covers in disk cache
- [x] minimal ui (display covers in lower left corner)
- [x] handle existing users
- [x] LRU cache
- [x] unit tests
- [x] md5 hash
Hello @daschuer, thanks a lot for your help. =D
Yesterday I pushed a different approach for this issue using COT. ab39f640619116c7ac07b21168e991aa9b121470

Basically, the idea is check if the user is in the same row for more than 0.1s 
In this approach we also avoid emitting loadCover() always when the selection changes (even if it is just to load a default cover).

Please, let me know if it's an issue still and if there's something more to improve. Thanks =D