Fixed: comments/spaces are now correctly coalesced before/after a preprocessor directive.

Consider the following example:

var x = 0;
// one
// two
#define FOO 7
// three
// four
x = FOO;

The 'var x = 0' expression should have commentsAfter = ["// one", "// two", "// three", "// four"], and 'x = FOO' should have commentsBefore the same.

Previously "// three" and "// four" were lost to commentsAfter and "//one" and "// two" were lost to commentsBefore. Now the comments and spaces before and after a preprocessor directive are correctly coalesced.