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.
Allow forward declaration
Update Duplicate definition change
Merge pull request #82 from velter/patch-8

Proposal to prevent duplicate definition