Store ABI version along with serialized descriptors

KotlinInfo annotation now has a version() field, which should be equal to the
compiler's JvmAbi.VERSION in order for this class to properly load and be used.

Create DeserializedVersionChecker, which has a trace to which it can report
errors related to ABI version. This is done because a dependency of
DeserializedDescriptorResolver from BindingTrace would be confusing.
Implementation of DeserializedVersionChecker will probably need to change when
we untie deserialization from java-resolve.

Check if PsiClass is actually a compiled class before trying to load serialized
data from it: otherwise it can be a Java source, as was in wrongAbiVersion()
test, and ASM will fail when trying to read that file. Rewrite the test so that
it now has a compiled Kotlin classes to check against (also include sources to
recompile this binary data later, although it won't probably be needed)
Refactor AbstractDescriptorSerializationTest

Use existing utility functions, replace ClassMetadata -> ClassData, add
annotations, etc.