Update of Eclipse project files

- Update of project dependencies
- Deletion of scala-xml project
- Deletion of scala-parser-combinators project
- Update of .gitignore to match nested .cache files
SI-7783 Don't issue deprecation warnings for inferred TypeTrees

Deprecation checks in RefChecks were looking into all TypeTrees
to find references to deprecated type aliases. However, when the
compiler infers a type argument or type of a member it creates
a TypeTree (with a null original) that was also leading to warnings.

I ran into this problem often when upgrading a build from SBT 0.12
to 0.13: a plugin I was using used the deprecated type alias, and I
suffered transitively when I used methods from its API.

This commit disables the checks for inferred TypeTree-s.
Bump version to 2.10.4 for nightlies
SI-7883 - don't iterate over all keys in MapWrapper.containsKey()
SI-7886 unsoundness in pattern matcher.

I tracked down what was behind the issue described here:

  // TODO: fix the illegal type bound in pos/t602 -- type inference
  // messes up before we get here:
  /*override def equals(x$1: Any): Boolean = ...
         // Span[Any] --> Any is not a legal type argument for Span!
         val o5: Option[com.mosol.sl.Span[Any]] =
  */

...which led straight to the unsoundness seen in neg/t7886.
It is dangerous to have an expected type of "Any" because
the type system will blithely ignore kind errors, since "Any"
can absorb anything. The consequence in this instance was
that inferring the case constructor for a type like

  Foo[T <: Bound]

if done with expected type Any, this would come up with Foo[Any].
I altered it to use expected type Foo[T], which lets the dummy
type parameter survive to carry the bound forward and restores
sense to the inference. The before/after output for -Xprint:patmat
on pos/t602.scala is:

15c15
<         if (x1.isInstanceOf[com.mosol.sl.Span[Any]])
---
>         if (x1.isInstanceOf[com.mosol.sl.Span[K]])
17c17
<             <synthetic> val x2: com.mosol.sl.Span[Any] = \
  (x1.asInstanceOf[com.mosol.sl.Span[Any]]: com.mosol.sl.Span[Any]);
---
>             <synthetic> val x2: com.mosol.sl.Span[K] = \
  (x1.asInstanceOf[com.mosol.sl.Span[K]]: com.mosol.sl.Span[K]);
19,20c19,20
<               val low$0: Option[Any] = x2.low;
<               val high$0: Option[Any] = x2.high;
---
>               val low$0: Option[K] = x2.low;
>               val high$0: Option[K] = x2.high;

A file in the library depended (needlessly) on the unsoundness.
It was easy to fix but reminds us this may affect existing code.
SI-6680 unsoundness in gadt typing.

Introduces -Xstrict-inference to deal with the significant
gap between soundness and what presently compiles. I'm hopeful
that it's TOO strict, because it finds e.g. 75 errors compiling
immutable/IntMap.scala, but it might be that bad.
Merge pull request #3009 from adriaanm/2.10.4

Bump version to 2.10.4 for nightlies
Merge pull request #2985 from retronym/ticket/7783

 Don't issue deprecation warnings for inferred TypeTrees
Rework cff8b569 to heal the windows build.

 - change newTermName to fix negative length names
   rather than reject them
 - restore the old logic in unspecializedName for names that
   result from AnyRef specialized type parameters.

Why does fix the windows build? I remain none the wiser.
Merge pull request #2973 from sschaef/eclipse-update3

Update of Eclipse project files
Merge pull request #3013 from retronym/topic/unspec-fix-windows

Rework cff8b569 to heal the windows build.
Correct build command for scala-ide
Describe type parameter interpolation in @implicitNotFound documentation

Using this feature is necessary for helpful error messages, so it should be documented.

Thank you to @adriaanm for recommending the this description.
Merge pull request #3015 from sschaef/eclipse-update

Correct build command for scala-ide
SI-7883: Added a comment per CR feedback from @adriaanm, @Ichoran
Merge pull request #3005 from paulp/pr/7886

SI-7886 unsoundness in pattern matcher.
no longer warns on calls to vampire macros

As eloquently elaborated and cleverly named by Travis Brown, macros
defined in structural types are useful:
http://meta.plasm.us/posts/2013/07/12/vampire-methods-for-structural-types/.

However, since such macros are on the intersection of a number of language
features, as usual, there are bugs.

This commit fixes an unwanted interaction of macros defined in structural
types with the scala.language.reflectiveCalls guard. Since macro calls
aren't going to be carried to runtime, there's no need to warn about them.
Simplify partest.task target, fix typo in comment.
Clarify findMembers, add reverse engineered docs

When looking for deferred members, it only makes sense
to retry when deferred members aren't excluded.
Single Abstract Method support: synthesis helpers

`synthesizeSAMFunction` will be used to expand the following tree:

```
{ (p1: T1, ..., pN: TN) => body } : S
```

to:

```
{
 def apply$body(p1: T1, ..., pN: TN): T = body

 new S { def apply(p1: T1, ..., pN: TN): T = apply$body(p1,..., pN) }
}
```

The expansion assumes `S` (the expected type) defines a single abstract method
(let's call that method `apply` for simplicity).

1. If 'T' is not fully defined, it is inferred by type checking
`def apply$body` without a result type before type checking the block.
The method's inferred result type is used instead of T`.
[See test/files/pos/sammy_poly.scala]

2. To more easily enforce S's members are not in scope in `body`, that tree
goes to the `apply$body` method that's outside the anonymous subclass of S.
(The separate `apply$body` method simplifies the implementation of 1&2.)

3. The following restrictions apply to S:
  1. Its primary constructor (if any) must be public, no-args, not overloaded.
  2. S must have exactly one abstract member, its SAM
  3. SAM must take exactly one argument list
  4. SAM must be monomorphic

We may later relax these requirements to allow an implicit argument list,
both on the constructor and the SAM. Could also let the SAM be polymorphic.