Introduce DatabaseComponent

Makes it easier to use the database and features run function to do
something on the database thread pool.

Currently there are two ways of handling database queries:
 1. Directly on the database thread (where all *Db classes are living)
 2. Using DatabaseComponent::run() (QThreadPool) with QFutures
The second one with its QFutures is the future.
3 jobs for master in 2 minutes and 48 seconds (queued for 213 minutes and 15 seconds)
Status Name Job ID Coverage
passed build #115827


passed clazy #115825


passed qmllint #115826