String interpolation bug fix

This change fixes a bug in class StringContext.scala.
Parts were not correctly added to the resulting string.

This commit includes a test case which covers the
example reported in the bug.

Closes SI-5614.
SIP-11 String Interpolation Simplification

Changed StringContext.f which implements the formatted
string interpolator.

Any '%' not in formatting position is left in the resulting string literally.
However, instead of adding %s format holders and extending the args with "%"
expressions, these '%' are replaced by '%%'. The formatter then converts '%%'
(percent formatter) to the literal '%' (\u0025). This also simplifies the spec.

The interpolation tests still pass.
SIP-11 String Interpolation Simplification

Changed StringContext.f which implements the formatted string interpolator.

Any '%' not in formatting position is left in the resulting string literally.
However, instead of adding '%s' format holders and extending the args with
"%" expressions, these '%' are replaced by '%%'. The formatter then converts
'%%' (percent formatter) to the literal % (\u0025).

The interpolation tests still pass.
Add tests for future combinators: map, flatMap, filter, collect, foreach, recoverWith, zip, fallbackTo
Unify "object Foo" and "Foo.type".

The source of many bugs over the years is that the first is
represented as a TypeRef and the second a SingleType.  Over a
great period of time I figured out how to shield us from the
more obvious bug manifestations, but a recent comment by adriaan
jarred me into realizing that we can fix it at the source.

This commit changes <:< and =:= to recognize when those two
representations are being compared and to treat them as equivalent
regardless of which is on the left.  The reason I don't quash one
representation entirely is that a fair bit of code depends on
singleton types having an underlying type which is not the same,
and regardless of that it would entail more changes and more risk.

The change allows removing the type inference conditions which
worried about this, and also fixes SI-4910.

scala> val t1 = typeRef(ScalaPackageClass.thisType, NoneModule.moduleClass, Nil)
t1: $r.intp.global.Type = None.type

scala> val t2 = t1.narrow
t2: $r.intp.global.Type = None.type

scala> (t1.getClass, t2.getClass)
res20: (Class[?0], Class[?0]) forSome { type ?0 <: $r.intp.global.Type; type ?0 <: $r.intp.global.Type } =
  (class scala.reflect.internal.Types$ModuleTypeRef,class scala.reflect.internal.Types$UniqueSingleType)

scala> ((t1 =:= t2, t2 =:= t1, t1 <:< t2, t2 <:< t1))
res21: (Boolean, Boolean, Boolean, Boolean) = (true,true,true,true)
Added Option#fold.
Add some ExecutionContext factories.
avoid field init prob: make NoTreeAnnotation a def
Fixed broken links in sources of scala/annotation
Fix for continuations issue.

Avoid explicit type arguments which don't conform to bounds
where they could be successfully inferred.

I had to disable one "neg" test which is no longer neg.
Can anyone clue me in as to whether it is important?
Fix for continuations issue with match blocks.

Don't type pattern trees with annotations still attached.
Symbol activity tracer.

I just can't shake the feeling more people should see the
things that I see.

  scalac -Dscalac.debug.syms foo.scala
Added overloading resolution to reflect.api.Symbol
Test case for overloading resolution during reflection.
Merge branch 'master' into topic/reflect
Merge commit 'refs/pull/353/head'; commit 'refs/pull/354/head'; commit 'refs/pull/356/head'; commit 'refs/pull/337/head'; commit 'refs/pull/339/head' into develop
A boatload of work on Symbols and Flags.

Finally my dream of orderliness is within sight.

It's all pretty self-explanatory.  More polymorphism, more immutable
identity, more invariants.
Merge branch 'develop'
Merge commit 'refs/pull/355/head^'
Giving HotSpot a better chance at BoxesRunTime.

Reusing small, simple methods rather than lots of cut and paste.