(feature) require label names to be unique within a rule (issue #270)

Add a new compiler pass to check if label names within a rule are unique.
Report any duplicate labels as a GrammarError.