Implement more robust parsing of "raw" idents

Without using the actual lexer to provide token information,
the best we can do is to try the current line (or potentially more)
assuming either that it ends in a raw residue or a normal one. We
then take the longest. The emacs code also follows this strategy
and it all seems to work well.

New tests are added that use FSharp.Data, fetching from NuGet if
required, to test against the original reported bugs.