text: Title: Parsing model: Move `type` and `tokens` from `_fields` to `_attributes`
  Body: Our parsing model is based on Python's [ast](https://docs.python.org/3/library/ast.html). The `Statement` base class currently has `type` and `token` listed in its `_fields`. According to the [documentation](https://docs.python.org/3/library/ast.html#ast.AST._fields), `_fields` should contain names of the child nodes and neither `type` or `token` is such a node. A better place to include them is `_attributes` (which doesn't seem to be documented) that we already use for things line `lineno` and `source`.
  
  In addition to not using `_fields` for semantically wrong purposes, this change seems to increase the performance of visiting the model. The [generic_visit](https://docs.python.org/3/library/ast.html#ast.NodeVisitor.generic_visit) goes through child nodes listed in `_fields` and thus traverses all tokens unnecessarily. This most likely won't have a big impact in data parsing with Robot itself, but external tools using the parser model can benefit more. See the PR #4911 for more information and other related performance enhancements. This change was also initially part of that PR, but because there's a small behavior change a separate issue was created for it.
  
  This change affects logging/debugging a bit. When using [ast.dump](https://docs.python.org/3/library/ast.html#ast.dump) with default arguments, it shows all fields but doesn't show attributes. Thus the type and the tokens are nowadays shown with statements, but they won't be included anymore in the future. It is, however, possible to use `include_attributes=True` to get attributes listed. Not showing tokens by default is actually mostly a good thing with bigger and more complicated models.
  
  This change affects also anyone who inspects `_fields` or `_attributes`. I don't see why anyone would do that, but it's anyway a good idea to give this issue the ´backwards incompatible` label and mention the change in the release notes.