Sets the metatable for the given table. (You cannot change the metatable of other types from Lua, only from C.) If metatable
is nil, removes the metatable of the given table. If the original metatable has a "__metatable"
field, raises an error.
This function returns table
.