apdu/ts_102_221: Implement SELECT case "df_ef_or_mf_by_file_id"

This was [sadly] simply missing from the implementation so far.

Change-Id: I7bbd13ce29f5adc1ca3ca01bffabbe02dd17db20
diff --git a/pySim/apdu/ts_102_221.py b/pySim/apdu/ts_102_221.py
index e5455d0..0ca6702 100644
--- a/pySim/apdu/ts_102_221.py
+++ b/pySim/apdu/ts_102_221.py
@@ -78,6 +78,17 @@
         elif mode == 'df_ef_or_mf_by_file_id':
             if len(self.cmd_data) != 2:
                 raise ValueError('Expecting a 2-byte FID')
+            sels = lchan.selected_file.get_selectables(['FIDS'])
+            file_hex = b2h(self.cmd_data)
+            if file_hex in sels:
+                if self.successful:
+                    #print("\tSELECT %s" % sels[file_hex])
+                    lchan.selected_file = sels[file_hex]
+                else:
+                    #print("\tSELECT %s FAILED" % sels[file_hex])
+                    pass
+            else:
+                logger.warning('SELECT UNKNOWN FID %s' % (file_hex))
         elif mode == 'df_name':
             # Select by AID (can be sub-string!)
             aid = self.cmd_dict['body']