Part of this patch also switches from using direct bitmap tests for ASCII tags with macros. This makes it easier to ensure all of these tests work properly should we need to change the logic.
We need many more tests for aliases. :-(
Due to how MakeMaker works, we need to maintain separate copies of the code in inc/ (which is required for Makefile.PL). Symlinks fuck of the make dist and make manifest stages of distribution building and we really don't want that. Yves, if this breaks your build again, try a fresh clone!
We also switch to using hv_common in a more intelligent way. This improves performance, and I dont think it actually violates the API either.
We've been assuming that by default, arrays have an underlying C array of 8 SVs, but that's not true, as far as I can tell. sv.c has that logic for hashes, but not for arrays. So we always call av_extend - even though it could be argued that it shouldn't be called for length=0 arrays, but the extra branch is probably not worth that comparatively rare special case.
It is easier on the encoder to encode the classname before it encodes whatever is blessed. So we swapped them around.