Features:
=========

* Add command for signing modules
   - There is a script to sign modules in kernel tree, but we should be able to
   sign modules by ourselves

* Stop using NOFAIL() and fatal()

* Protect index against OOM

* Implement actions in kmod tool like 'insert', 'remove', 'info', etc

* testsuite:
   - when fake delete_module() succeeds, remove its entry from /sys/module

* Stop using system() inside the library and use fork + exec instead

* config: configs that do not need to be matched by fnmatch() could be using a
  vector instead of a list. This way we could search in it by calling
  bsearch().

* review API, maybe unify all of these getters:
   - kmod_module_version_get_symbol()
   - kmod_module_version_get_crc()
   - kmod_module_symbol_get_symbol()
   - kmod_module_symbol_get_crc()
   - kmod_module_dependency_symbol_get_symbol()
   - kmod_module_dependency_symbol_get_crc()
   - kmod_module_versions_free_list()
   - kmod_module_symbols_free_list()
   - kmod_module_dependency_symbols_free_list()

* index: drop the "open(), seek(), read()" implementation and use another one
  with mmap(). When lookup() is called and the file is not mmaped, mmap it.

* Finish removal of "rmmod -w" when it's gone from kernel.

* Deprecate not using KMOD_REMOVE_NOWAIT on libkmod.

Things to be added/removed in kernel (check what is really needed):
===================================================================

* list of currently loaded modules
	- readdir() in /sys/modules: dir without a 'initstate' file means the
	  module is builtin.

* kill /proc/modules ?
	- Unlikely, given other tools might depend on it
