Clone opts to fix block registration with multiple voxel-land instances

registerBlocks() sets opts.materials, and would skip registration if
opts.material was already set. But the same opts was shared for both
client and server, causing block registration to be skipped on the
client. Serialize and deserialize opts to fix this.