Consolidate codes dealing with LLVM struct type
auto merge of #5089 : sanxiyn/rust/llvm-struct, r=pcwalton

Note on `struct_elt`: the comment is wrong, it actually dereferences the nth element of LLVM struct type if it is a pointer. That's why `T_ptr` is removed in `callee.rs`.