Fix two problems happening during deserialization causing command line defines to be reported as being built-in defines:
- When serializing or deserializing the <built-in> and <command line> files don't convert them into absolute paths.
- When deserializing SM_SLOC_BUFFER_ENTRY we need to call setHasLineDirectives in the same way as we do for SM_SLOC_FILE_ENTRY.
- When created suggested predefines based on the current command line options we need to add line markers in the same way that InitializePreprocessor does.
- Adjust a place in clangd where it was implicitly relying on command line defines being treated as builtin.