Use an interface for TypeCheckResults

Instead of the concrete type. This avoids forcing a dependency on
FSharp.Compiler.Editor.dll onto every user.
Use the range for the last identifier

instead of the first, when finding identifiers using
GetDeclarationLocation. This is to make sure it works with
FSharpBinding's version of GetDeclarationLocation (which looks at
position and not names to determine which declaration to look for).