Fix source ranges for empty end range in clang diagnostics
Clang diagnostics will sometimes have a CXSourceRange where the end is something like 0:0. In that case, we're taking things literally and it causes really weird ranges in the editor for transient errors while typing.
In that case, we should just duplicate the beginning location.