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
- [ ] unit tests
> why do you need a fieldescaper here?

because we're gonna remove the unused coverLocations, which have slashes that could break our query.
However, as now we are not removing files from disk-cache any more, it means that we could do it by coverId instead of using coverLocations.  30d47c2f8d1f52fdefbe2b12b9550065f2935391