Fix for issue #648.

Uses the llvmInternal member and the intrinsic name to identify an intrinsic.
Implements llvm.bswap, llvm.ctpop, llvm.ctlz and llvm.cttz intrinsics as builtins and remove the core.bitop counterparts.

The implementation is complicated by the fact that the overloaded intrinsic name is resolved during code generation.