Merge pull request #1960 from ViniciusMiana/2.10.x

SI-6853 changed private method remove to be tail recursive.
Merge pull request #1909 from kzys/jira-6017-2.10.x

SI-6017 Scaladoc's Index should be case-sensitive
Merge pull request #2043 from lrytz/t3353

SI-3353 don't extract <unapply-selector> into named-arg local val
Merge pull request #1998 from JamesIry/2.10.x_6963_2

SI-6963 Add version to -Xmigration
Merge pull request #1980 from retronym/backport/1518

[backport] SI-2968 Fix brace healing for `^case (class|object) {`
Merge pull request #2027 from paulp/pr/fix-empty-package

Fix access to empty package from the repl.
Merge pull request #2026 from JamesIry/2.10.x_SI-2818

SI-2818 Makes List#foldRight work for large lists
evicts javac-artifacts.jar

Apparently, the usual _1, _2, _3... naming scheme also works for java
files, which need to be compiled together with partests. This allows us
to get rid of javac-artifacts.jar.
Merge pull request #1975 from retronym/ticket/6601-revert

Revert "SI-6601 Publicise derived value contstructor after pickler"
Merge pull request #1979 from retronym/backport/1499

[backport] Fix for SI-6206, inconsistency with apply.
SI-7039 unapplySeq result type independent of subpattern count

Fixes a bug in the implementation of the `unapplySeq` part of the spec below.

An `unapply` method with result type `R` in an object `x` matches the
pattern `x(p_1, ..., p_n)` if it takes exactly one argument and, either:
  - `n = 0` and `R =:= Boolean`, or
  - `n = 1` and `R <:< Option[T]`, for some type `T`.
     The argument pattern `p1` is typed in turn with expected type `T`.
  - Or, `n > 1` and `R <:< Option[Product_n[T_1, ..., T_n]]`, for some
    types `T_1, ..., T_n`. The argument patterns `p_1, ..., p_n` are
    typed with expected types `T_1, ..., T_n`.

An `unapplySeq` method in an object `x` matches the pattern `x(p_1, ..., p_n)`
if it takes exactly one argument and its result type is of the form `Option[S]`,
where either:
  - `S` is a subtype of `Seq[U]` for some element type `U`, (set `m = 0`)
  - or `S` is a `ProductX[T_1, ..., T_m]` and `T_m <: Seq[U]` (`m <= n`).

The argument patterns `p_1, ..., p_n` are typed with expected types
`T_1, ..., T_m, U, ..., U`. Here, `U` is repeated `n-m` times.
Merge pull request #2024 from scalamacros/ticket/6812

SI-6812 scaladoc can opt out of expanding macros
[backport] SI-6482, lost bounds in extension methods.

Squashed commit of the following:

commit 5c156185306ba797c0443d9dccae0ae7ce462a1f
Author: Paul Phillips <paulp@improving.org>
Date:   Sat Oct 6 15:42:50 2012 -0700

    A little more housecleaning in ExtensionMethods.

    The only real contribution is readability.
    (cherry picked from commit 61f12faacaaccf366f9211ba6493fb042a91f1d2)

    Conflicts:
    	src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala

commit 79f443edf584745d614e24fb9ca6644c6b18d439
Author: Paul Phillips <paulp@improving.org>
Date:   Sat Oct 6 14:22:19 2012 -0700

    Incorporated pull request feedback.
    (cherry picked from commit 153ccb4757718cceb219988f30381f73362e6075)

commit 707f580b0cdcb01e27ca4c76991dea427945b5bd
Author: Paul Phillips <paulp@improving.org>
Date:   Sat Oct 6 10:20:45 2012 -0700

    Fix for SI-6482, lost bounds in extension methods.

    That was a good one. How to create a new method with type
    parameters from multiple sources, herein.
    (cherry picked from commit ff9f60f420c090b6716c927ab0359b082f2299de)

commit 8889c7a13f74bc175e48aa2209549089a974c2af
Author: Paul Phillips <paulp@improving.org>
Date:   Fri Oct 5 22:19:52 2012 -0700

    Responded to comment about how many isCoercibles there are.

    I make the case that there is only one.
    (cherry picked from commit 883f1ac88dd7cec5882d42d6b48d7f267d1f6e00)
SI-7022 Additional test case for value class w. bounds

As reported against 2.10.0, and as fixed by SI-6482,
which was backported in the previous commit.
SI-7033 Be symful when creating factory methods.

Implicit class factory methods were synthesizing the
reference to the class as `Ident(classDef.name)`, which
was unhygienic in case of `implicit class X[X]`.

To use symbols without causing a cycle, I switched from
`REF(symbol)` to `Ident(symbol)`. The former calls into:

    at scala.reflect.internal.TreeGen.mkAttributedSelect(TreeGen.scala:184)
    at scala.reflect.internal.TreeGen.mkAttributedRef(TreeGen.scala:124)
    at scala.reflect.internal.TreeGen.mkAttributedRef(TreeGen.scala:130)
    at scala.tools.nsc.ast.TreeDSL$CODE$.REF(TreeDSL.scala:307)

which forces the info of enclosing module and forms a cycle.
Merge commit 'c1dd8bbaa4' into wip/fresh-merge2
Merge commit 'ccd7abe897' into wip/fresh-merge2

Conflicts:
	src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala
Merge commit '62681e191a' into wip/fresh-merge2
Merge commit '644eb7078a' into wip/fresh-merge2

Conflicts:
	build.xml
	src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
Merge commit 'b573c287d2' into wip/fresh-merge2