- Add a 'Location' class that represents the four properties of a physical location
- Enhance 'SourceLocation' to provide 'expansion' and 'spelling' locations, maintaining backwards compatibility with existing code by forwarding the four properties to 'expansion'.
- Update the implementation to use 'clang_getExpansionLocation' instead of the deprecated 'clang_getInstantiationLocation', which has been present since 2011.
- Update the implementation of 'clang_getSpellingLocation' to actually obtain spelling location instead of file location.
- Update test cases to account for changes to the result of 'clang_getSpellingLocation'.
Note: this commit is a reapplication of r316278 along with fixes to the