Add grammar.dd

Copy GRAMMAR sections from other files.
Fix style - Replace $(B ) to $(D )
Fix style - Insert space between tokens, remove 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 `AliasThisDeclaration` so it's identical with `AliasThis`

- 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

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

- `StorageClass` and `Attribute` should be mostly same list
  `Attribute` should contain `pure` and `nothrow`

- 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 grammar bugs around `Declaration`

- `Declaration` should contain `(Aggregate|Enum|Import)Declaration`
  Otherwise we cannot use them in statement scope via `DeclarationStatement`.

- Move out `AliasThis` from `Declaration`
  It cannot appear in statement scope.

- `StorageClass` and `Attribute` should be mostly same list
  Add missing `LinkageAttribute` and `AlignAttribute` in `StorageClass`.
  Add missing `pure`, `nothrow` in the list of `Attribute`.
  Add missing `ref` in both `Attribute` and `StorageClass`.
fix Issue 10206 - User-defined attributes not documented well in language specification
Remove lex part from grammar.dd

It would be better that we leave them in lex.dd.
fix BinaryInteger grammar.

BinaryDigits does not exist. Instead it should point BinaryDigitsUS.
Merge pull request #438 from 9rnsr/fix_BinaryInteger

fix BinaryInteger grammar.
Merge pull request #429 from 9rnsr/grammar

Add grammar.dd to show complete D grammar