Instead of lowering pointers, teach the JSBackend how to handle them

The main theme of this series is teaching the JSBackend to handle LLVM's pointer types, which allows us to skip the PNaCl pass which lowers them.

Also, I added patches to teach ExpandI64 and PromoteIntegers to preserve alignment when splitting loads and stores.