Replace a for-range loop by a while loop in javalib.

It was on the path of Predef.println(), which is worth
making not too slow. Besides, it was the only for-range
loop in javalib.
Merge pull request #325 from sjrd/while-loop-in-javalib

Replace a for-range loop by a while loop in javalib.
Fix #322: DCE eliminates equals__O__O__Z used by ScalaJS.anyEqEq.
Make dce report call stack when reaching non-existent method/class.
Better dce, making a difference between static/dynamic linking.

Most calls in Scala use dynamic linking, i.e., overrides in
subclasses are taken into account. A few call kinds use static
linking: constructor calls, and super calls (arguably, calls
to methods of impl classes also use static linking).

This commit refines the set of reachable methods by retaining
the difference between static linking and dynamic linking. For
example, in the snippet:

class Foo {
  def foobar = 42
}
class Bar extends Foo {
  override def foobar = 3
}
def doSomething(foo: Foo) = foo.foobar
doSomething(new Bar)

the method Foo.foobar can now be eliminated (but not Bar.foobar),
because the dce can tell that only Bar's are created (not Foo's),
and because foobar is overridden in Bar, the foobar in Foo can
never be called.

It can tell so because the call to foobar in doSomething() uses
dynamic linking. Previously it would have to keep Foo.foobar
because it thought that static linking was possible there,
effectively calling Foo.foobar although it is overridden in all
instantiated subclasses.
Hide most of the trace reporting of dce under 'last' command.

Because the full output is overwhelming.
Merge pull request #327 from sjrd/better-dce

Better dce