Don't collapse runs of whitespace to a single space, instead replace
each whitespace with one space.
Leave the expression as-is if it contains one or more double quotes
as we don't want to change the value of string literals, and any
expression containing double quotes won't currently work in the context
where we need to replace newlines anyway.
Fixes#3127 better
Support parsing `sizeof(X)` for any expression or type X by skipping
balanced parentheses. We don't need to actually parse X since the type
of sizeof is always size_t.
Fixes#2919