replace symbols correctly when subtyping dependent types

according to discussion in https://groups.google.com/forum/#!topic/scala-internals/kSJLzYkmif0/discussion
this change has no impact on the scala type system, but it can fix subtyping for annotation checkers if
the pluggable type system supports annotations that can refer to method parameters.
case module toString is synthetic
allow functions with refined types in uncurry. integrate annotationslub into lubs. keep type annotations when computing lubs.
Namer Refactorings, Analyzer Plugins

will fix comment later.

hoock for annotation checkers to assignType (when the type of a val or def def is inferred)

allow annotation checkers to modify the expected type before type-checking a tree

Allow annotation checkers to hook into Namers.typeSig

Replaces the previously added hook `assignAnnotationsToTree` by the more general solution
`typeSigAnnotations`. This hook is invoked whenever the type of a signature (ClassDef, DefDef,
etc) is computed by either parsing the annotated type, or by computing the righthand side's type.

Minor cleanups in AnnotationCheckers.scala

allow annotation checker to be active in selected phases only

hook for annotation checkers to modify getter / setter types

namer refactorings, analyzer plugins

includes test for fixed SI-1803