PNaCl Transform Passes for Rust.

This (rather large) PR is mostly a set of cherry picked commits from Google PNaCl 's LLVM fork, with the rest consisting of additional fixes plus supplemental transform passes I wrote for my PNaCl Rust branch.
Patches to Rust proper for PNaCl targets are forthcoming.