Use fat Userdata with magic number instead of relying solely on MTs.

Metatables are great, but using them is not the fastest way to check ownership
of the Userdata. Using magic number field also allows us to store a constness
flag there, which removes __const metatable field access on everycheck, that's
definitely a plus. The real difference will be observable on benchmarks of
course, but for now this approach sounds really good.