Proposal to prevent duplicate register

Add a new property to control the behavior. By default, the behavior is not changed. Setting AllowDuplicateRegsiter to false will raise an exception each time a class/interface/function register a name already known.