VMArray should serialize its type.

This fixes the issue with the utf8/utf16/utf32 types in the new Buf
implementation.
Get P6int/P6num to take/keep bit size.
Compact int8/int16/int32 array storage.

This means a buf8/utf8/blob8 will actually be a byte array in memory.