Refactor of Cast handling logic.

This patch accomplished the following:
- Merges the concepts of queryId (runtime type id for cast to
  purposes) and seedId (runtime type id for all other purposes).
  Now there is only one runtime type identifier. In the compiler
  a runtime type id is represented by a JRuntimeTypeReference node.
- There is a separate pass that replaces JRuntimeTypeReference nodes
  for the appropriate type constant. Previously this was done in
  GenerateJavaScriptAst.
- No longer monkey patches the String prototype, instead relies on
  JsoDevirtualizer to devirtualize string instance method calls.

This is a step towards allowing runtime type identifiers be unique
in absence of global information which is needed for separate
compilation.

TODO:
- Allow the use of different types of runtime type ids (strings, ints)
- Simplify classmetadata handling in general. In particular modernize
  class definition.
- Rename Seed... into more meaningfull names.
- Remove rest of fixed id references in SymbolMapGeneration.

Change-Id: I62cfbf35241b7a5cefa6c3cd9f7d4fdbf0aecf5d
Merge commit '782d732be4c146675beef4726ec20239c5a6df5b' into HEAD

Conflicts:
	dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/Cast.java

Caused by iOS 6 fix for #10722

Change-Id: I98044907af43b90ffe21bb433fbc04c061f12147
Merge "Merge commit '782d732be4c146675beef4726ec20239c5a6df5b' into HEAD"