Add specs for Class#initialize when given the Class
Fix Class#initialize when given the Class on X19
Add specs for Module#append_features
Add specs for Module#extend_object
Add specs for Module#module_function
Fix Module#module_function that will be undefined on the Class
Add spec for String#size with encoding change.

The characters number of the string is cached inside
`vm/builtin/string.cpp` in num_char. It should be invalidated
when the encoding changes, for example because of
`String#force_encoding`: with a different encoding, the
correlation between characters and bytes may change completely.
Add specs for Module#extend_object when given a frozen object
Merge pull request #2418 from kachick/fix-class-initialize

Class#initialize should raise a TypeError when given the Class from X19
Merge pull request #2421 from kachick/class-undef-some_methods

Class should undef Module#module_function
Reset number of characters when changing encoding
Remove tags for passing specs
Merge pull request #2428 from kachick/spec-module_extend_object

Add specs for Module#extend_object when given a frozen object
Merge branch 'razielgn-feature-string-size-encoding-change'
Start serial for classes with 1 and prevent double compile

This prevents the exact same method being compiled multiple times, where
the class and serial id for specializations are exactly the same.
Return previously retrieved atomic value

Also make sure we initialize these serials with 1, so we don't use 0 as
a serial number for these.