Marked metaclasses as not passed as self. This make the llvm code a bit shorter and easier to understand.
Reorganized prelude order and removed some redundant requires