Don't rely on javac's (broken) handling of wildcard erasure.

The JLS doesn't define what erasing a wildcard means, but a javac bug
caused it to try to erase wildcards anyways. The bug will be fixed in
an upcoming version of javac [1], which breaks this code.

This change implements wildcard simplification to match the class
javadoc: ? extends Foo -> erasure(Foo)
and: ? -> Object

[1] https://bugs.openjdk.java.net/browse/JDK-8055054

Change-Id: I0dbce8849a03c48bc838b8ad47a6ccd535257148
Review-Link: https://gwt-review.googlesource.com/#/c/9681/
(cherry picked from commit a5df12388dcfb79ecb333ddb8e5279931e2246c3)