(#20122) Fix commentstack when parsing hashes

We need to pop from commentstack in the grammar whenever we parse a
hash; an LBRACE pushes to commentstack, yet an AST::ASTHash does not
have a doc string which would get the comment popped from the stack
again. This left an extra item on the commentstack which caused all
subsequent Lexer#getcomment to return "".
(#20122) Extend parser_spec for comment spec test

Make the test for "comments before statement" contain a more complex
example; the bug in fixed in f104400 was only triggered when using
a hash.