So instead of keeping comments in a property list we get them out of every property. It is a bit tricky as comments escaped at the beginning need to be tracked and saved, but ones from the middle or end of the value has to be saved for later (see `innerProperties`) and tracked after the property even if they are moved before it. See tests for a better picture.
We compare property names first then head to comparing a body which adds a stringify step.
Apparently there's a bug in `source-map` library which does not normalize paths in `source` field to proper URL format. Thus source maps generated on Windows have backslashes instead of forward slashes. We correct it manually to get same output on all platforms.