core: DB - Snapshot Materialized Views support

Adding Snapshot Materialized Views support to the database.

A Snapshot Materialized View is actually a table built on top of
a real view that enables to select data from the Snapshot Materialized
View easily and efficiently.
Candidates for Snapshot Materialized Views are views that are based on
slowly-changing data. The Snapshot Materialized Views is actually
functioning as a cache.
The Snapshot Materialized View is refreshed per request.
The Snapshot Materialized View definitions are stored in the
materialized_views table.

Change-Id: I17333db996f0e3b1856e2df02a621810c3ebaa53
Signed-off-by: Eli Mesika <emesika@redhat.com>