(#7659) 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 "".

Make the test for "comments before statement" contain a more complex
example to demonstrate that nested comments should not be returned.
(#7659) add a test for puppetdoc in the presence of hash literals

Add a test to confirm the effect of the fix for a puppetdoc bug.
(#7659) add more tests for possible hash use syntaxes
Merge branch 'ticket/master/7659-puppet-docstring'

* ticket/master/7659-puppet-docstring:
  (#7659) add more tests for possible hash use syntaxes
  (#7659) add a test for puppetdoc in the presence of hash literals
  (#7659) Fix commentstack when parsing hashes

Closes GH-2056