Maintain a pool of modules alive

Based on previous implementation by
	Gustavo Sverzut Barbieri <barbieri@profusion.mobi>
diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
index 9c8a627..432f453 100644
--- a/libkmod/libkmod-module.c
+++ b/libkmod/libkmod-module.c
@@ -144,6 +144,12 @@
 
 	path_to_modname(name, name_norm, &namelen);
 
+	m = kmod_pool_get_module(ctx, name_norm);
+	if (m != NULL) {
+		*mod = kmod_module_ref(m);
+		return 0;
+	}
+
 	m = calloc(1, sizeof(*m) + namelen + 1);
 	if (m == NULL) {
 		free(m);
@@ -154,6 +160,8 @@
 	memcpy(m->name, name_norm, namelen + 1);
 	m->refcount = 1;
 
+	kmod_pool_add_module(ctx, m);
+
 	*mod = m;
 
 	return 0;
@@ -178,6 +186,12 @@
 
 	path_to_modname(path, name, &namelen);
 
+	m = kmod_pool_get_module(ctx, name);
+	if (m != NULL) {
+		*mod = kmod_module_ref(m);
+		return 0;
+	}
+
 	m = calloc(1, sizeof(*m) + namelen + 1);
 	if (m == NULL)
 		return -errno;
@@ -193,6 +207,8 @@
 	memcpy(m->name, name, namelen);
 	m->refcount = 1;
 
+	kmod_pool_add_module(ctx, m);
+
 	*mod = m;
 
 	return 0;