I've changed LuaC::UdataLib to deal with T externally instead ot T*

This is in the hope that doing this will make it easy to blend primitive
handling and udata handling into one system so then I can use a varargs
setup for calling functions

It also allows for cleaner syntax too