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