Note that elements inherit the module from their parent element by default so you only need to override this at strategic points. The only exception to this are pages (which have no parent element) and default to deploying assets site wide without using modules.
The possible values for the AssetDeployment property are:
Note that you can mix up the asset deployment properties as much as you want, even within a single page.
Modules are a way for the application developer to group elements together by the method used to deploy their assets. Becasue these are very different use cases, it does not make sense to build a package that contains modules, and this is not supported by the framework.
Although in theory you could write a custom module that inherits from the built-in Module class or implements the IModule interface, there is very little point in doing so because the module provides no functionallity.