Update the Q# grammar so that it is consumable as-is by QsFmt:
Use C# for embedded code snippets instead of Java.
Add alternative labels for most production rules with alternatives.
Add some element labels, mostly for cases where the same production rule occurs more than once (to distinguish between them by name), where a name would help clarify the role of a production rule if it isn't obvious, or where an anonymous alternative over a set of keywords is used. The majority of element labels in QsFmt's grammar have not been copied over and QsFmt will be updated to not need them.
Update the Q# grammar so that it is consumable as-is by QsFmt: