More precise Out param analysis

This relies on commits travitch/llvm-base-types@2b81083997614ddffc99f6db8e692817e4bd1c6e
and travitch/llvm-data-interop@88ff396e79e8159ab999aff098a2d9d2e69ced75.
These provide type sizes (in bytes) and let us treat `memcpy` calls as
struct assignments by value only when the sizes are correct.  Before,
any call to `memcpy` was assumed to be copying a struct if the
destination pointer was a pointer to a struct.  Now we check the size.