Dramatically improves generics support in UiBinder.

Current uibinder implementation is ignoring the generics and
remove any type information (if there exists).
This is partly because ui.xml cannot declare the type
parameters for generic types. However, if the element is
declared as a ui:field then we might know more about the type
based on the declaration in the class.

Patch is actually based on my previous patch for UiHandler to
enhance type information based on @UiField declarations.
It moves type enhancing to an earlier step so that we get
more info on the type for all fields.

Change-Id: I25bb0488c6ea3816d9b34bdf08cd0f5906bda5ab
Review-Link: https://gwt-review.googlesource.com/#/c/5842/
Merge remote-tracking branch 'upstream/master'