Daravind/Catalog metrics storage

CatalogMetricsStorage

1) Added support to Metrics Service to store metrics in a Catalog
2) CatalogMetricsStorage only writes to Catalog from 1 (background) thread by using a ConcurrentQueue
3) Also, using 'ShouldUseDBAndCatalog' setting, metrics may be written both to DB and Catalog
4) Following settings are supported as well
     i) IsLocalCatalog - uses filesystem
     ii) CatalogPageSize and CatalogItemPackageStatsCount to determine how the Catalog is built
I'd like to avoid this hit to the SQL database.  Can we just assume the data is okay here and during the replication process filter out invalid records?