Add proper code emission for floating-point constants.

Float and double constants need to be emitted as memory references to
the corresponding constant pool entry, and the constant tables need to
be emitted at the end of the output.

The Ice::Constant data structure is extended to hold a unique integer
value for each constant in its type pool.  This integer can be used to
construct a label for the constant pool entry's memory location.

Ice::GlobalContext is extended to return a copy of the set of pooled
constants of a given type, in order to iterate over them to generate
the table at the end of code emission.