The debug line parser was being overly conservative in its checking in some areas. This change removes some checks, and modifies the parser to attempt to recover from more situations where something looks wrong. In cases where a length doesn't match what has been read, parsing is now resumed from the later position (i.e. std::max(OldOffset + Length, CurrentOffset)).
This patch also improves some related testing to make it easier to see what the test is doing.