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
That would allow the metrics services to avoid the SQL database calls upon each request (30,000 per hour) and instead the replicate job could go get the full list of package id/version pairs that exist once per hour and sanitize the data during replication.

For writing statistics into the database from the metrics service, we'd be able to perform the check there.