Attaching document comments to AST nodes

Now document comments are attached to AST nodes and modules
Here's my feeling of what might make sense:

```haskell
data Declaration a =
    { decl :: a
    , comment :: Maybe String
    }

type SourceDecl = Declaration (Declaration' (Port Valid.Expr Var.Raw) Valid.Def Var.Raw)
```

And then we can use named accessors instead of `fst` and `snd`.

Side note: tuples are a special case of records that are nameless.