Overhauling mixin.

Feel the bugs falling away.
Allows now private primary constructors in value classes.
Fixed SI-5063.
Clarifying MethodSynthesis.

Tried to paint a picture of how one might synthesize an implicit
method to accompany an implicit class.
Fixed test cases.
Fix for SI-5580.

Lub explosions mean we can't expect sane types in error messages.
Defend against the insane.
Overhaul of JavaConver{sions,ters}.

Initially motivated by SI-5580, then just motivated.  I broke up
the opaquely named JavaConversions and JavaConverters into the following
traits encapsulating some permutation of

  { to java, to scala, bidirectional }
  { wrappers, decorators }

I named everything consistently in terms of either Wrappers
or Decorators.  Decorators install those asJava/asScala methods
onto collections of the right kind; Wrappers hide the process.

JavaConversions then reduces to an object which (ill-advisedly)
extends both WrapAsJava and WrapAsScala.  And JavaConverters is
an object extending DecorateAsScala and DecorateAsJava.  However
other more clearly named vals exist in the newly created
scala.collection.convert package object.

  val decorateAsJava  = new DecorateAsJava { }
  val decorateAsScala = new DecorateAsScala { }
  val decorateAll     = new DecorateAsJava with DecorateAsScala { }
  val wrapAsJava      = new WrapAsJava { }
  val wrapAsScala     = new WrapAsScala { }
  val wrapAll         = new WrapAsJava with WrapAsScala { }

So for instance to import asScala decorators, and only those:

  scala> import scala.collection.convert.decorateAsScala._
  import scala.collection.convert.decorateAsScala._

  scala> new java.util.ArrayList[String].asScala groupBy (x => x)
  res0: scala.collection.immutable.Map[String,scala.collection.mutable.Buffer[String]] = Map()

I propose we put those vals or a subset of them in the scala
package object rather than way down in scala.collection.convert.
Merge branch 'issue/SI-5580' of /scala/trunk into develop
An illustrative delayedInit test.
[vpm] typeMatchAnonFun respects owner structure
[vpm] typedMatchAnonFun: selectorTp, params in scope
typedMatchAnonFun seems to work

need to set up symbols with approximated info for the method and its owner
before typing the method's body; when the body has been typed,
we know what its result type will be, so update info of class and method to reflect that

better detection of synthesized matches: annotate selector rather than relying on symbol info

encapsulate CASE | SYNTHETIC flags (setting and querying)
handle missing type info
remove wrong comment

still something pretty wrong though, VerifyError when bootstrapping using -Yvirtpatmat:

quick.plugins:
    [mkdir] Created dir: /Users/adriaan/git/scala-build/build/quick/classes/continuations-plugin
[scalacfork] Compiling 5 files to /Users/adriaan/git/scala-build/build/quick/classes/continuations-plugin
[scalacfork] Exception in thread "main" java.lang.VerifyError: (class: scala/reflect/internal/Types$class, method: matchesType signature: (Lscala/reflect/internal/SymbolTable;Lscala/reflect/internal/Types$Type;Lscala/reflect/internal/Types$Type;Z)Z) Register 12 contains wrong type
[scalacfork] 	at scala.reflect.internal.SymbolTable.<init>(SymbolTable.scala:13)
don't throw error in setError when -Ydebug
fix virtpatmat tailcalls -- no more verifyerror