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 for Function treess with refined types in UnCurry.

Also removes an unnecessary condition in UnCurry, isFunctionType(fun.tpe)
is always true.
Keep annotations when computing lubs

Integrates annotationsLub into lub.

Also fixes SubstSymMap when mapping over annotaion trees. I don't understand what the previous
code was supposed to achieve, but it crashed in some of my examples.
SI-1803, plus documentation and cleanups in Namers, mainly in typeSig

- when typing (and naming) a ValDef, tpt and rhs are now type checked in the same context (the inner / ValDef context). this does not change any behavior, but is more uniform (same as for DefDef). martin told me (offline) that this change is desirable if it doesn't break anything. (it doesn't).

- typeSig is now more uniform with a separate method for each case (methodSig, valDefSig, etc). methodSig was cleaned up (no more variables) and documented. the type returned by methodSig no longer contains / refers to type skolems, but to the actual type parameters (so we don't need to replace the skolems lateron).

- documentation on constructor contexts, type skolems

- more tests for SI-5543
Analyzer Plugins

AnnotationCheckers are insufficient because they live outside the compiler cake and it's not possible to pass a Typer into an annotation checker.

Analyzer plugins hook into important places of the compiler:

  - when the namer assigns a type to a symbol (special hook for accessors)
  - before typing a tree, to modify the expected type
  - after typing a tree, to modify the type assigned to the tree

Analyzer plugins optinally have an annotation checker associated with them. Analyzer plugins and their associated annotation checker can be activated only during selected phases of the compiler.

Refactored the CPS plugin to use an analyzer plugin (since adaptToAnnotations is now part of analyzer plugins, no longer annotation checkers).