TLV: Add one-shot TLV encoder

So far, the TLV code contained two types of functions
* tlp_parse() to parse all TLVs according to definition into tlvp_parsed
* various helper functions to encode individual TLVs during message
  generation

This patch implements the inverse of tlv_parse(): tlv_encode(), which
takes a full 'struct tlv_pared' and encodes all IEs found in it.  The
order of IEs is in numerically ascending order of the tag.

As many protocols have different IE/TLV ordering requirements, let's add
a tlv_encode_ordered() function where the caller can specify the TLV
ordering during the one-shot encode.

Change-Id: I761a30bf20355a9f80a4a8e0c60b0b0f78515efe
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index 0f4a0db..299504e 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -537,6 +537,9 @@
 tlv_parse;
 tlv_parse2;
 tlv_parse_one;
+tlv_encode;
+tlv_encode_ordered;
+tlv_encode_one;
 tvlv_att_def;
 vtvlv_gan_att_def;