Fix two problems happening during deserialization causing command line defines to be reported as being built-in defines:
* When serializing 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.