Start to use struct osmo_auth_vector from gsm_auth_tuple

Rather than having a 'private' structure for kc, sres and rand, we
now finally (with 4 years delay) use osmo_auth_vector from libosmogsm,
which encapsulates authentication vectors that can be either GSM
triplets or UMTS quintuples or a combination of both.

gsm_auth_tuple becomes a wrapper around osmo_auth_vector, adding
use_count and key_seq to it.

key_seq is no longer initialized inside gprs_gsup_messages.c, as there
is no CKSN / key_seq inside the message anyway.  If a usre of the code
needs key_seq, they need to manage it themselves.
diff --git a/openbsc/src/gprs/sgsn_vty.c b/openbsc/src/gprs/sgsn_vty.c
index 3f61163..50f0e8f 100644
--- a/openbsc/src/gprs/sgsn_vty.c
+++ b/openbsc/src/gprs/sgsn_vty.c
@@ -613,11 +613,11 @@
 		vty_out(vty, "     seq # : %d, ",
 			at->key_seq);
 		vty_out(vty, "     RAND  : %s, ",
-			osmo_hexdump(at->rand, sizeof(at->rand)));
+			osmo_hexdump(at->vec.rand, sizeof(at->vec.rand)));
 		vty_out(vty, "     SRES  : %s, ",
-			osmo_hexdump(at->sres, sizeof(at->sres)));
+			osmo_hexdump(at->vec.sres, sizeof(at->vec.sres)));
 		vty_out(vty, "     Kc    : %s%s",
-			osmo_hexdump(at->kc, sizeof(at->kc)),
+			osmo_hexdump(at->vec.kc, sizeof(at->vec.kc)),
 			VTY_NEWLINE);
 	}
 
@@ -704,17 +704,17 @@
 
 	OSMO_ASSERT(subscr->sgsn_data);
 
-	if (osmo_hexparse(sres_str, &at.sres[0], sizeof(at.sres)) < 0) {
+	if (osmo_hexparse(sres_str, &at.vec.sres[0], sizeof(at.vec.sres)) < 0) {
 		vty_out(vty, "%% invalid SRES value '%s'%s",
 			sres_str, VTY_NEWLINE);
 		goto failed;
 	}
-	if (osmo_hexparse(rand_str, &at.rand[0], sizeof(at.rand)) < 0) {
+	if (osmo_hexparse(rand_str, &at.vec.rand[0], sizeof(at.vec.rand)) < 0) {
 		vty_out(vty, "%% invalid RAND value '%s'%s",
 			rand_str, VTY_NEWLINE);
 		goto failed;
 	}
-	if (osmo_hexparse(kc_str, &at.kc[0], sizeof(at.kc)) < 0) {
+	if (osmo_hexparse(kc_str, &at.vec.kc[0], sizeof(at.vec.kc)) < 0) {
 		vty_out(vty, "%% invalid Kc value '%s'%s",
 			kc_str, VTY_NEWLINE);
 		goto failed;