The motivation behind this refactor is to be able to use
DWARFAbbreviationDeclaration from LLDB. LLDB has its own implementation
of DWARFAbbreviationDeclaration that is very similar to LLVM's but it
has different semantics around error handling.
This patch modifies llvm::DWARFAbbreviationDeclaration::extract to
return an llvm::Expected<ExtractState> to differentiate between "I am
done extracting" and "An error has occured", something which the current
return type (bool) does not accurately capture.
(ignore this suggestion if this isn't going to end up as a user-facing error)
There are guidelines on error and warning formatting (see https://llvm.org/docs/CodingStandards.html#error-and-warning-messages), so we should conform to those in new code, unless there's a strong reason not to.