Avoid struct loads which are used to read aggregate elements

Large aggregate loads can sometimes be handled suboptimally. In particular,
SROA can sometimes split these into individual elements, which is suboptimal
for structs containing many elements and can trigger degenerate behavior in
the alias analysis.

This teaches canAvoidLoad and the IR generators for Index and Field to avoid
loads which are only used to read aggregate elements, by copying the aggregate
being loaded and accessing elements via the copy.
Add data layout and target-specific analysis passes to pass managers

Without these passes, a large number of optimizations were being disabled. This
change resulted in a 4.0% (2.9% - 5.0% at 95% CI) benchmark performance
improvement.

While at it, add the verifier pass to the pass manager to check that we are
emitting valid IR, as the optimizers can be sensitive to invalid IR.
Emit the export data in an excluded section

This allows the linker to strip these sections from DSOs and executables,
saving a small amount of space.
Introduce support for emitting LTO object files

This will use the new support in LLVM for IR in object files, once it
lands.
Merge pull request #201 from pcc/libgo-lto1

Enable more optimizations, and begin on LTO