Implements stricter parsing

Now parses also comment nodes into separate nodes whenever
possible (before and after known rules). Comments within
rules (like inside declarations) are not separately parsed.

Also adds some more test cases for this new behavior.