target: added lsmod method

Added a wrapper for lsmod that parses the output into named tuples.
diff --git a/devlib/target.py b/devlib/target.py
index b0a3737..98d7871 100644
--- a/devlib/target.py
+++ b/devlib/target.py
@@ -437,6 +437,23 @@
     def has(self, modname):
         return hasattr(self, identifier(modname))
 
+    def lsmod(self):
+        lines = self.execute('lsmod').splitlines()
+        entries = []
+        for line in lines[1:]:  # first line is the header
+            if not line.strip():
+                continue
+            parts = line.split()
+            name = parts[0]
+            size = int(parts[1])
+            use_count = int(parts[2])
+            if len(parts) > 3:
+                used_by =  ''.join(parts).split(',')
+            else:
+                used_by = []
+            entries.append(LsmodEntry(name, size, use_count, used_by))
+        return entries
+
     def _update_modules(self, stage):
         for mod in self.modules:
             if isinstance(mod, dict):
@@ -840,6 +857,7 @@
 
 FstabEntry = namedtuple('FstabEntry', ['device', 'mount_point', 'fs_type', 'options', 'dump_freq', 'pass_num'])
 PsEntry = namedtuple('PsEntry', 'user pid ppid vsize rss wchan pc state name')
+LsmodEntry = namedtuple('LsmodEntry', ['name', 'size', 'use_count', 'used_by'])
 
 
 class Cpuinfo(object):