performance: fix TypeInfoValidator.CACHED_BINDINGS usage

WeakHashMap doesn't work here, use LRU cache based on LinkedHashMap
tests: implement new method IBuildContext.recordDependency()
ti: drop deprecated APIs
ti: some extensibility
javadocs for ITypeInferenceListener
ti: drop DelegatingTypeSystem
ti: don't use deprecated JSTypeSet.getFirst()
FieldReferenceNodes will "transform" them self to Field or
MethodDeclarations if it sees later on that the location is exactly the
location of the name.
And if it knows the type (Function or not)

now resolvePotentialMatch will return a new MatchingNode that it really
is.