implement more files with TLV + construct

This adds encoding/decoding for more files, from 51.011 (SIM)
to 31.102 (USIM) and 31.103 (ISIM)

Change-Id: I6083d2bb0a307f660f09af384803f84e4098a5ed
diff --git a/pySim/ts_31_103.py b/pySim/ts_31_103.py
index 5ca8279..e1f552f 100644
--- a/pySim/ts_31_103.py
+++ b/pySim/ts_31_103.py
@@ -24,6 +24,7 @@
 
 from pySim.filesystem import *
 from pySim.utils import *
+from pySim.tlv import *
 from pySim.ts_51_011 import EF_AD, EF_SMS, EF_SMSS, EF_SMSR, EF_SMSP
 from pySim.ts_31_102 import ADF_USIM, EF_FromPreferred
 import pySim.ts_102_221
@@ -78,18 +79,27 @@
 
 # TS 31.103 Section 4.2.2
 class EF_IMPI(TransparentEF):
+    class nai(BER_TLV_IE, tag=0x80):
+        _construct = GreedyString("utf8")
     def __init__(self, fid='6f02', sfid=0x02, name='EF.IMPI', desc='IMS private user identity'):
         super().__init__(fid=fid, sfid=sfid, name=name, desc=desc)
+        self._tlv = EF_IMPI.nai
 
 # TS 31.103 Section 4.2.3
 class EF_DOMAIN(TransparentEF):
+    class domain(BER_TLV_IE, tag=0x80):
+        _construct = GreedyString("utf8")
     def __init__(self, fid='6f05', sfid=0x05, name='EF.DOMAIN', desc='Home Network Domain Name'):
         super().__init__(fid=fid, sfid=sfid, name=name, desc=desc)
+        self._tlv = EF_DOMAIN.domain
 
 # TS 31.103 Section 4.2.4
 class EF_IMPU(LinFixedEF):
+    class impu(BER_TLV_IE, tag=0x80):
+        _construct = GreedyString("utf8")
     def __init__(self, fid='6f04', sfid=0x04, name='EF.IMPU', desc='IMS public user identity'):
         super().__init__(fid=fid, sfid=sfid, name=name, desc=desc)
+        self._tlv = EF_IMPU.impu
 
 # TS 31.103 Section 4.2.7
 class EF_IST(TransparentEF):
@@ -140,8 +150,11 @@
 
 # TS 31.103 Section 4.2.16
 class EF_UICCIARI(LinFixedEF):
+    class iari(BER_TLV_IE, tag=0x80):
+        _construct = GreedyString("utf8")
     def __init__(self, fid='6fe7', sfid=None, name='EF.UICCIARI', desc='UICC IARI'):
         super().__init__(fid=fid, sfid=sfid, name=name, desc=desc)
+        self._tlv = EF_UICCIARI.iari
 
 # TS 31.103 Section 4.2.18
 class EF_IMSConfigData(BerTlvEF):
@@ -155,8 +168,11 @@
 
 # TS 31.103 Section 4.2.20
 class EF_WebRTCURI(TransparentEF):
+    class uri(BER_TLV_IE, tag=0x80):
+        _construct = GreedyString("utf8")
     def __init__(self, fid='6ffa', sfid=None, name='EF.WebRTCURI', desc='WebRTC URI'):
         super().__init__(fid=fid, sfid=sfid, name=name, desc=desc)
+        self._tlv = EF_WebRTCURI.uri
 
 # TS 31.103 Section 4.2.21
 class EF_MuDMiDConfigData(BerTlvEF):