PNaCl: Fix handling of va_arg on structs in simplification passes

Cherry picked from https://codereview.chromium.org/135953002, originally
authored by mseaborn@chromium.org

Without this ordering change, ExpandStructRegs will fail with:

Value:   %val = va_arg i8* %va_list, %MyStruct
LLVM ERROR: Unrecognized struct value

BUG=https://code.google.com/p/nativeclient/issues/detail?id=2381
TEST=*.ll tests
R=dschuff@chromium.org
Merge pull request #53 from ericrannaud/incoming

PNaCl: Fix handling of va_arg on structs in simplification passes
1.26.1
Update to the new SIMD load/store API
Refactor ExtractElementInst code.

Pull the code out into a standalone function, in preparation for
implementing extraction with non-constant indicies.
Update for new swizzle syntax.

Swizzle is changing to match shuffle's style of specifying each lane as
a separate index.
Recognize the LLVM insert+shuffle splat sequence

LLVM IR has no splat operator; it uses an insert and a shuffle instead.
Recognize this pattern so that we can emit a single SIMD splat
operation.
1.27.0