Resuming work on fNbt.Serialization. Instead of caching NbtSerializers directly, we now cache TypeMetadata. NbtSerializers can now be constructed with any SerializerOptions, for maximum flexibility. Nothing works yet, but everything compiles.