Implement a persistent storage aggregation counter class.

This class is currently used to aggregate the active daily use time
but can also be used to aggregate other data (e.g., active use time
between crashes) before sending to UMA. Abstracting this in a separate
class also simplifies the daemon unit tests.

An alternative design would store the data on shutdown (but may slow
down shutdown a little). This should do it for now.

BUG=none
TEST=gmerged on device,inspected logs,about:histograms,etc.

Review URL: http://codereview.chromium.org/2731008
diff --git a/metrics/Makefile b/metrics/Makefile
index e0c3741..c8ba545 100644
--- a/metrics/Makefile
+++ b/metrics/Makefile
@@ -16,32 +16,42 @@
 LIB = libmetrics.a
 SHAREDLIB = libmetrics.so
 LIB_TEST = metrics_library_test
+COUNTER_TEST = counter_test
 
+TESTCOUNTER_OBJS = \
+	counter.o \
+	counter_test.o
 CLIENT_OBJS = \
 	metrics_client.o
+DAEMON_OBJS = \
+	counter.o \
+	metrics_daemon.o \
+	metrics_daemon_main.o
+TESTDAEMON_OBJS = \
+	counter.o \
+	metrics_daemon.o \
+	metrics_daemon_test.o
 LIB_OBJS = \
 	metrics_library.o
 TESTLIB_OBJS = \
 	metrics_library.o \
 	metrics_library_test.o
-DAEMON_OBJS = \
-	metrics_daemon.o \
-	metrics_daemon_main.o
-TESTDAEMON_OBJS = \
-	metrics_daemon.o \
-	metrics_daemon_test.o
 
+TESTCOUNTER_LIBS = -lgmock -lgtest -lbase -lrt -lpthread
 DAEMON_LDFLAGS = $(LDFLAGS) $(LDCONFIG) -lrt -lbase -lpthread -lgflags
 TESTDAEMON_LIBS = -lgmock -lgtest
 TESTLIB_LIBS = -lgtest -lbase -lrt -lpthread
 
 all: $(LIB) $(SHAREDLIB) $(CLIENT) $(DAEMON)
 
-tests: $(DAEMON_TEST) $(LIB_TEST)
+tests: $(COUNTER_TEST) $(DAEMON_TEST) $(LIB_TEST)
 
 $(CLIENT): $(CLIENT_OBJS) $(SHAREDLIB)
 	$(CXX) $(LDFLAGS) $^ -o $@
 
+$(COUNTER_TEST): $(TESTCOUNTER_OBJS)
+	$(CXX) -o $@ $^ $(TESTCOUNTER_LIBS)
+
 $(DAEMON): $(DAEMON_OBJS) $(SHAREDLIB)
 	$(CXX) -o $@ $^ $(DAEMON_LDFLAGS)
 
@@ -73,4 +83,4 @@
 
 clean:
 	rm -f $(CLIENT) $(DAEMON) $(LIB) $(SHAREDLIB) *.o
-	rm -f $(DAEMON_TEST) $(LIB_TEST)
+	rm -f $(COUNTER_TEST) $(DAEMON_TEST) $(LIB_TEST)