text: Title: Invalid sections are not represented properly in parsing model
  Body: Consider the following test suite:
  
  ```
  *** Test cases ***
  Test 
      Log 1
  
  *** invalid section ***
  Something
  ```
  
  This will produce following AST:
  
  ```
  File(
      source='/Users/jth/Code/robotframework/tmp/foo.robot',
      languages=(),
      lineno=1,
      col_offset=0,
      end_lineno=5,
      end_col_offset=23,
      errors=(),
      sections=[
          TestCaseSection(
              lineno=1,
              col_offset=0,
              end_lineno=5,
              end_col_offset=23,
              errors=(),
              header=SectionHeader(lineno=1, col_offset=0, end_lineno=1, end_col_offset=18, errors=(), type='TESTCASE HEADER', tokens=(Token(TESTCASE_HEADER, '*** Test Cases ***', 1, 0),)),
              body=[
                  TestCase(
                      lineno=2,
                      col_offset=0,
                      end_lineno=3,
                      end_col_offset=11,
                      errors=(),
                      header=TestCaseName(lineno=2, col_offset=0, end_lineno=2, end_col_offset=4, errors=(), type='TESTCASE NAME', tokens=(Token(TESTCASE_NAME, 'Test', 2, 0),)),
                      body=[KeywordCall(lineno=3, col_offset=3, end_lineno=3, end_col_offset=11, errors=(), type='KEYWORD', tokens=(Token(KEYWORD, 'Log', 3, 3), Token(ARGUMENT, '1', 3, 10)))],
                  ),
                  Error(lineno=5, col_offset=0, end_lineno=5, end_col_offset=23, errors=("Unrecognized section header '*** invalid section ***'. Valid sections: 'Settings', 'Variables', 'Test Cases', 'Tasks', 'Keywords' and 'Comments'.",), type='ERROR', tokens=(Token(ERROR, '*** invalid section ***', 5, 0, "Unrecognized section header '*** invalid section ***'. Valid sections: 'Settings', 'Variables', 'Test Cases', 'Tasks', 'Keywords' and 'Comments'."),)),
              ],
          ),
      ],
  )
  ```
  
  In the AST, their erroneous header is put inside the TestCase body, which is a bit weird from the AST perspective. 
  It would be better to create a separate AST node, InvalidSection, which would contain the data of the invalid section.