This file is not as easy to handle errors as the driver or the
symbol table because of the nature of file IO. However, I think
this patch is not as horrible as I expected; I'm fairly satisfied
with this change. If we find an error, we call error() to record
the error, and return a zero value. Zero value is an empty
vector for the vector, nullptr for a pointer, or an empty string
for the StringRef. Callers gracefully handle such values.
In some cases, we don't have good zero values. I changed the
type of such functions so that they return a boolean value.
All changes are mechanical and should not change the existing