Iasm and obj lowering for advanced switch lowering.

Jump table emission is delayed until offsets are known. X86 local jumps can be
near or far. Sanboxing is applied to indirect jumps from jump table.

BUG=
R=stichnot@chromium.org, jvoung

Review URL: https://codereview.chromium.org/1257283004.
diff --git a/src/IceTargetLoweringARM32.h b/src/IceTargetLoweringARM32.h
index 9727bd9..58deb24 100644
--- a/src/IceTargetLoweringARM32.h
+++ b/src/IceTargetLoweringARM32.h
@@ -80,6 +80,8 @@
 
   // TODO(ascull): what size is best for ARM?
   SizeT getMinJumpTableSize() const override { return 3; }
+  void emitJumpTable(const Cfg *Func,
+                     const InstJumpTable *JumpTable) const override;
 
   void emitVariable(const Variable *Var) const override;
 
@@ -432,6 +434,7 @@
   void lowerGlobals(const VariableDeclarationList &Vars,
                     const IceString &SectionSuffix) override;
   void lowerConstants() override;
+  void lowerJumpTables() override;
 
 protected:
   explicit TargetDataARM32(GlobalContext *Ctx);