The compiler server does something weird with location structs, but all the client cares about is the offset and span. Perform a weak comparison on location structs
rip out one level of abstraction, as it turns out we'll need more variation in parser errors than anticipated
char-by-char matching of server compiler error messages for everything but cond and case.