Add grammar.dd

Copy GRAMMAR sections from other files.
Fix style - Replace $(B ) to $(D )
Fix style - Insert space between tokens, tweak MULTICOLS
Fix links
Sort out sections and non-terminal symbols

- Add 'type' section

- Collect functions in 'function' section
  `Constructor` `Destructor` `StructPostblit` `UnitTest` etc

- AggregateDeclaration
  Contains ClassDeclaration and InterfaceDeclaration

- [Bug fix] Move `Pragma` and `Property` in 'attributes' section
  `@safe`, `@trusted`, and `@system` should be a part of `Attribute`
Tweak grammar (1)

- Replace identical non-terminal symbols to general ones
  # `CCDeclarationBlock` to `DeclarationBlock`
  # `Declarations` to `DeclDefs`opt

- Remove `AliasThis` so it's identical with `AliasThisDeclaration`

- Rename to more general names: Postblit, Allocator, Deallocator

- Add AggregateBody, and replace other XXXBody to it

- Remove TemplateIdentifier, MixinIdentifier, and ConstraintExpression
  They are mostly redandant

- Rename `Aggregate` to `ForeachAggregate`
  Avoid confusion with `AggregateDeclaration`

- Use `TemplateParameters`

- Use `OPT` for the positions which can be empty
Tweak grammar (2)

- Tweak `AliasInitializer` grammar
  Resemble `AutoDeclaration`.

- Add `ExpInitializer`

- Merge `Lambda` into `FunctionLiteral`

- Replace `CastQual` to `TypeCtors`
  They are mostly identical.

- Add `SpecialKeyword`
Tweak grammar (3) - Bug fixes

- Fix `AliasThisDeclaration` grammar, supply tail semicolon.

- If `TemplateParameters` does not exist, `Constraint` must not appear.

- Add missing `MemberFunctionAttributes`opt
  TODO: Currently (shared) static constructor cannot have postfix attributes.

- Add missing grammar for opaque class and interface

- Add Anon(Struct|Union)Declaration

- Fix `IfCondition`
fix Issue 10206 - User-defined attributes not documented well in language specification