This class can be used to generate unique IDs for graphs, vertices, and edges. The class responsible for creating objects of one of these types should define a static field of type IDGenerator, then call GetNextID every time an object of that type is created. This results in independent sequences for each type.