Fix non deterministic behaviour in TypeTightener.

JProgram.generalizeTypes(Collection<JType>) depends on the ordering of the
input collection. It was called with data obtained from HashSets.

Made all HashSets that could flow into the aforementioned function into
LinkedHashSet to have a deterministic iteration order.

Change-Id: I51f551dbf2d5362f710d4e1321f7b7bb35445608
Review-Link: https://gwt-review.googlesource.com/#/c/2530/

Review by: skybrian@google.com
Avoid creating anonymous inner classes with wildcard type parameters.

Under Java 7 wildcards can not be type parameters of superclasses in the extends clause
nor superinterfaces in the implementing clause. Anonymous inner classes can not have wildcards
in their type parameters.

Change-Id: Ifbcd6ecec455512a7da5eb473c6bf2e9f402f0ea
Review-Link: https://gwt-review.googlesource.com/#/c/2470/

Review by: goktug@google.com
Add callbacks to Super Dev Mode to find out when a compile starts and finishes,
and an alternate main() that can be called after parsing options.

Change-Id: I2a27a07d2c8219d496613b1c1c88380c6dc3d032
Review-Link: https://gwt-review.googlesource.com/#/c/2540/