Clean string metrics optimizer

There are 4 classes related to the MetricsPersistenceOptimizer 
GenericMetricsPersistenceOptimizer and StringMetricsPersistenceOptimizer. The creation of these classes is controlled by the MetricsPersistenceOptimizerFactory class. They do a simple operation, whether to persist a string metric or no.

In this PR, I took the code out of StringMetricsPersistenceOptimizer and added it to AstyanaxWriter. Also added unit tests for it in the MetricsIntegrationTest class. Removal of the MetricsPersistenceOptimizer also is a part of this PR.
When we add the logic whether a String metric should be persisted or no, it becomes slightly complex. I dont like nested if elses, hence created a separate method