Less Metric Puts

Every since the change over to the new metric type `DurationMetric` for front press latency, the amount of requests to put this type of metric has increased significantly.

When putting metrics, before we would `put` all the `DataPoints` for each metric in batches of 20 and `cloudwatch` would then calculate everything needed from this information (`Max`, `Min`, `Avg`).
Instead of doing this, we now use `StatisticSet` to describe all this information for each metric, meaning there will only be one `Put` per metric.

I have also grouped `applicationMetrics` and `systemMetrics` together so there will be even less `puts`.

@robertberry @gklopper 
Why convert a try to an option?

`Try(datapoints.maxBy(_.value).value).getOrElse(0L).toDouble`