Add the foundations for IMetadataService
SqliteTools: Fix potential crash with empty string columns
Add album creation & fetching
Make the primary key a part of the Table policy.

This allow the Cache helper to set it automatically, and avoid cache
misses when relying on the primary key as the cache column (since the
primary key was always 0)
Album: Add a fetch from DB unit test
Add an helper to discard a value from cache
File: Make Type available from the interface & constify some methods
Handle AlbumTrack creation
Labels: Do not store a list of files.
Expect std::string in SqliteTools.

So we don't have to call .c_str() every 10 lines
NULL -> nullptr