factory: introduce BusinessContextFactory

Funnel all DB queries through this new context, which allows us to
cache objects during refreshes. This should cut down the number of queries
to the database.

Signed-off-by: Pierre-Alexandre Meyer <pierre@mouraf.org>