Simplifying the MetricsPersistenceOptimizer code 

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.
Major nit: these changes are out of scope, and really should be done in their own PR.

minor nit: indentation is uneven and doesn't match existing entries.