Convert Constant->emit() definitions to allow multiple targets to define them.

Wasn't sure how to allow TargetX8632 and TargetARM32
to both define "ConstantInteger32::emit(GlobalContext *)",
and define them differently if both targets happen to be
ifdef'ed into the code. Rearranged things so that it's now
"TargetFoo::emit(ConstantInteger32 *)", so that each
TargetFoo can have a separate definition.

Some targets may allow emitting some types of constants
while other targets do not (64-bit int for x86-64?).
Also they emit constants with a different style.
E.g., the prefix for x86 is "$" while the prefix for ARM
is "#" and there isn't a prefix for mips(?).
Renamed emitWithoutDollar to emitWithoutPrefix.

Did this sort of multi-method dispatch via a visitor
pattern, which is a bit verbose though.

We may be able to remove the emitWithoutDollar/Prefix for
ConstantPrimitive by just inlining that into the few places
that need it (only needed for ConstantInteger32). This
undoes the unreachable methods added by: https://codereview.chromium.org/1017373002/diff/60001/src/IceTargetLoweringX8632.cpp
The only place extra was for emitting calls to constants.
There was already an inlined instance for OperandX8632Mem.

BUG= https://code.google.com/p/nativeclient/issues/detail?id=4076
R=stichnot@chromium.org

Review URL: https://codereview.chromium.org/1129263005
diff --git a/src/IceTargetLowering.h b/src/IceTargetLowering.h
index baa569f..5003574 100644
--- a/src/IceTargetLowering.h
+++ b/src/IceTargetLowering.h
@@ -23,6 +23,7 @@
 
 #include "IceDefs.h"
 #include "IceInst.h" // for the names of the Inst subtypes
+#include "IceOperand.h"
 #include "IceTypes.h"
 
 namespace Ice {
@@ -207,6 +208,16 @@
 
   virtual void emitVariable(const Variable *Var) const = 0;
 
+  void emitWithoutPrefix(const ConstantRelocatable *CR) const;
+  void emit(const ConstantRelocatable *CR) const;
+  virtual const char *getConstantPrefix() const = 0;
+
+  virtual void emit(const ConstantUndef *C) const = 0;
+  virtual void emit(const ConstantInteger32 *C) const = 0;
+  virtual void emit(const ConstantInteger64 *C) const = 0;
+  virtual void emit(const ConstantFloat *C) const = 0;
+  virtual void emit(const ConstantDouble *C) const = 0;
+
   // Performs target-specific argument lowering.
   virtual void lowerArguments() = 0;