reworked MNCC codebase

This is Harald's reworked MNCC base, slowly heading towards integration
into master.  The key changes are:
* provide much more structure to the data in gsm_mncc
* encode_* and decode_* functions now take a structure rather than tons
  of individual arguments (whose order nobody can remember)
* make sure we don't have copies of the same code everywhere by introducing
  mncc_set_cause() and mncc_release_ind()
* save horizontal screen space if possible
* make sure we break lines > 80 characters
diff --git a/openbsc/src/gsm_data.c b/openbsc/src/gsm_data.c
index a78425f..9ab5895 100644
--- a/openbsc/src/gsm_data.c
+++ b/openbsc/src/gsm_data.c
@@ -84,7 +84,8 @@
 }
 
 struct gsm_network *gsm_network_init(unsigned int num_bts, enum gsm_bts_type bts_type,
-				     u_int16_t country_code, u_int16_t network_code)
+				     u_int16_t country_code, u_int16_t network_code,
+				     int (*mncc_recv)(struct gsm_network *, int, void *))
 {
 	int i;
 	struct gsm_network *net;
@@ -101,6 +102,11 @@
 	net->network_code = network_code;
 	net->num_bts = num_bts;
 
+	INIT_LLIST_HEAD(&net->trans_list);
+	INIT_LLIST_HEAD(&net->upqueue);
+
+	net->mncc_recv = mncc_recv;
+
 	for (i = 0; i < num_bts; i++) {
 		struct gsm_bts *bts = &net->bts[i];
 		int j;
@@ -118,7 +124,7 @@
 			trx->bts = bts;
 			trx->nr = j;
 
-			for (k = 0; k < 8; k++) {
+			for (k = 0; k < TRX_NR_TS; k++) {
 				struct gsm_bts_trx_ts *ts = &trx->ts[k];
 				int l;