OnDiskHashTable: Expect the Info type to declare the hash size

This changes the on-disk hash to get the size of a hash value from the
Info type, so that clients can be more flexible with the types of hash
they use.
OnDiskHashTable: Expect the Info type to declare the offset type

This changes the on-disk hash to get the type to use for offsets from
the Info type, so that clients can be more flexible with the size of
table they support.
Don't read CompilerInstance fields that don't exist in ASTUnit

When transferring data from a CompilerInstance in an error path we need
to consider cases where the various fields are uninitialized.