Add MethodCacheEntry to LLVM types
This optimization was problematic and not always correct

A better version should be made so this is actually checked correctly.
This version can also create a fast path for certain cases where there's
a mismatch.
Create inline version for check_serial

This checks the common case of a valid cache inline instead of through
the helper function.
Add better version of kind_of optimization

This makes sure to only do a quick check against VM types since if then
the types don't match, we know the whole chain doesn't match. With the
older implementation there was a problem with subclasses of VM types,
because they share the type info but can't use a quick check.

That is why we now compare against the class_id and not use the TypeInfo
directly.