pySim/filesystem: fix mutable default list/dict arguments

Having lists and dictionaries as default argument values is a bad
idea, because the same instance of list/dict will be used by all
objects instantiated using such constructor:

  def appendItem(itemName, itemList=[]):
      itemList.append(itemName)
      return itemList

  print(appendItem('notebook'))
  print(appendItem('pencil'))
  print(appendItem('eraser'))

Output:

  ['notebook']
  ['notebook', 'pencil']
  ['notebook', 'pencil', 'eraser']

Change-Id: I83d718ff9c3ff6aef47930f38d7f50424f9b880f
diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index a1bb127..04fa250 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -706,10 +706,10 @@
 class CardApplication(object):
     """A card application is represented by an ADF (with contained hierarchy) and optionally
        some SW definitions."""
-    def __init__(self, name, adf=None, sw={}):
+    def __init__(self, name, adf=None, sw=None):
         self.name = name
         self.adf = adf
-        self.sw = sw
+        self.sw = sw or dict()
 
     def __str__(self):
         return "APP(%s)" % (self.name)
@@ -723,13 +723,13 @@
     """A Card Profile describes a card, it's filessystem hierarchy, an [initial] list of
        applications as well as profile-specific SW and shell commands.  Every card has
        one card profile, but there may be multiple applications within that profile."""
-    def __init__(self, name, desc=None, files_in_mf=[], sw=[], applications=[], shell_cmdsets=[]):
+    def __init__(self, name, **kw):
         self.name = name
-        self.desc = desc
-        self.files_in_mf = files_in_mf
-        self.sw = sw
-        self.applications = applications
-        self.shell_cmdsets = shell_cmdsets
+        self.desc = kw.get("desc", None)
+        self.files_in_mf = kw.get("files_in_mf", [])
+        self.sw = kw.get("sw", [])
+        self.applications = kw.get("applications", [])
+        self.shell_cmdsets = kw.get("shell_cmdsets", [])
 
     def __str__(self):
         return self.name