statistics: Introduce 'struct counter' instead of using unsigned long

This has the advantage that counters can be added all over the code
very easily, while having only one routine that stores all of the
current counter values to the database.  The counters are synced
every 60 seconds, providing relatively fine grained statistics
about the network usage as time passes by.
diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c
index a5f64f1..d5b0116 100644
--- a/openbsc/src/gsm_04_11.c
+++ b/openbsc/src/gsm_04_11.c
@@ -517,7 +517,7 @@
 	u_int8_t address_lv[12]; /* according to 03.40 / 9.1.2.5 */
 	int rc = 0;
 
-	bts->network->stats.sms.submitted++;
+	counter_inc(bts->network->stats.sms.submitted);
 
 	gsms = sms_alloc();
 	if (!gsms)
@@ -607,7 +607,7 @@
 	gsms->receiver = subscr_get_by_extension(bts->network, gsms->dest_addr);
 	if (!gsms->receiver) {
 		rc = 1; /* cause 1: unknown subscriber */
-		bts->network->stats.sms.no_receiver++;
+		counter_inc(bts->network->stats.sms.no_receiver);
 		goto out;
 	}
 
@@ -761,6 +761,7 @@
 static int gsm411_rx_rp_error(struct msgb *msg, struct gsm_trans *trans,
 			      struct gsm411_rp_hdr *rph)
 {
+	struct gsm_network *net = trans->lchan->ts->trx->bts->network;
 	struct gsm_sms *sms = trans->sms.sms;
 	u_int8_t cause_len = rph->data[0];
 	u_int8_t cause = rph->data[1];
@@ -794,9 +795,9 @@
 		 * to store this in our database and wati for a SMMA message */
 		/* FIXME */
 		dispatch_signal(SS_SMS, S_SMS_MEM_EXCEEDED, trans->subscr);
-		trans->lchan->ts->trx->bts->network->stats.sms.rp_err_mem++;
+		counter_inc(net->stats.sms.rp_err_mem);
 	} else
-		trans->lchan->ts->trx->bts->network->stats.sms.rp_err_other++;
+		counter_inc(net->stats.sms.rp_err_other);
 
 	sms_free(sms);
 	trans->sms.sms = NULL;
@@ -1073,7 +1074,7 @@
 
 	DEBUGP(DSMS, "TX: SMS DELIVER\n");
 
-	lchan->ts->trx->bts->network->stats.sms.delivered++;
+	counter_inc(lchan->ts->trx->bts->network->stats.sms.delivered);
 
 	return gsm411_rp_sendmsg(msg, trans, GSM411_MT_RP_DATA_MT, msg_ref);
 	/* FIXME: enter 'wait for RP-ACK' state, start TR1N */