Unique module ID

Each module is assigned its own unique ID which is accessible via its edm::ModuleDescription. The id is assigned in a thread safe manner.