add ABIInfo trait and separate x86-64 ABI implementation from foreign trans

ABIInfo provides a method to translate the type of foreign function.
The foreign trans uses the method to get ABI-specific type and uses the result to generate LLVM instructions for wrapper and shim functions.