Simplify pushuserdata() process
Improve error message when calling init fails
Rename method table from __metatable to _methodtable and rename class_methods variable to class_index, because __index might not be the method table anymore
When pushing NULL, don't push 0 nils, but just nothing
Try to be saner with casting userdata
Use lua_absindex to prevent wrongly indexing relative addresses
Split preparation from initialisation (prep() is called for objects being pushed, too), cleanup push a bit, remove duplication-prevention feature