ExternalTarget refactoring

It takes some ideas from clang.
ExternalTarget implements target ABI and generates ExternalFunctions.
And ExternalFunction uses computed results to generate LLVM code.
ExternalTarget also caches ExternalFunctions that have the same type.