SI-7491 deprecate overriding App.main and clarify documentation

App.main should never be overridden, so let's enforce it.
Merge pull request #3235 from xeno-by/topic/macro-plugin-interface

new hooks in AnalyzerPlugins to enable macro experimentation
SI-7859 fix AnyVal.scala scaladoc.

Value class member need not be public in 2.11+
More robust hyperlink tests for the presentation compiler

Report null symbols in an civilised manner, rather than with a NPE.
Test to show the bug with hyperlinking in macro arguments

Currently, the presentation compiler sees the expansion of macros;
this no longer contains the trees corresponding to the macro arguments,
and hyperlink requests result incorrect results.

https://www.assembla.com/spaces/scala-ide/tickets/1001449#
SI-8064 Automatic position repair for macro expansion

  - Replace NoPosition with the focus of the macro application
  - Focus all range positions, for example, those of spliced arguments
Use macro expandee, rather than expansion, in pres. compiler

The presentation compiler is primarily interested in trees that
represent the code that one sees in the IDE, not the expansion of
macros.

This commit continues to expand macros, but adds a hook in which
the presentation compiler discards the expansion, retaining instead
the expandee. The expandee is attributed with the type of the
expansion, which allows white box macros to work. In addition,
any domain specific errors and warnings issued by the macro will
still be reported, as a side-effect of the expansion.

The failing test from the last commit now correctly resolves
hyperlinks in macro arguments.

Related IDE ticket:

  https://www.assembla.com/spaces/scala-ide/tickets/1001449#

This facility is configured as follows:

    // expand macros as per normal
    -Ymacro-expand:normal

    // don't expand the macro, takes the place of -Ymacro-no-expand
    -Ymacro-expand:none

    // expand macros to compute type and emit warnings,
    // but retain expandee. Set automatically be the presentation
    // compiler
    -Ymacro-expand:discard

This leaves to door ajar for a new option:

    // Don't expand blackbox macros; expand whitebox
    // but retain expandee
    -Ymacro-expand:discard-whitebox-only

The existing test for SI-6812 has been duplicated. One copy exercises
the now-deprecated -Ymacro-no-expand, and the other uses the new
option.
Removes unnecessary generality in the macro engine

In Jan 2013, I submitted a number of pull requests that built up a foundation
for the upcoming type macros pull request. Unfortunately, type macros
ended up being rejected, but the extra generality introduced in advance
still persisted in the compiler until now.

This commit takes care of unused generality in the macro engine,
keeping the internal implementation as well as the public API clean.
More clear implicitNotFound error for ExecutionContext
SI-7469 Remove misc. @deprecated elements
SI-8035 Deprecate automatic () insertion in argument lists

This promotes the () insertion warning from -Ywarn-adapted-args to a
deprecation warning. -Xfuture tunrs it into a compiler error.

Auto tupling remains unchanged for now.

The tests have been fixed the following way:
- Warnings caused by general sloppiness (Try(), Future(), ...) have been
  fixed.
- Warnings which raise interesting questions (x == (), ...) received an
  updated checkfile for now.
[nomaster] SI-8114 Binary compat. workaround for erasure bug SI-7120

We can't backport SI-7120 to 2.10.x as it changes erased signatures,
which can lead to interop problems between 2.10.3 and 2.10.4.

But, we can detect one of the nasty symptoms -- a bridge method
with the same signature as its target -- and treat that.

This commit detects duplicate bridges in the ASM (only) backend
and removes them.
Merge pull request #3344 from jamesward/fix/ec-implicit-error

More clear implicitNotFound error for ExecutionContext
Merge pull request #3341 from xuwei-k/anyval-scaladoc

SI-7859 fix AnyVal.scala scaladoc.
Merge pull request #3338 from gourlaysama/t7491

SI-7491 fix typo in scala.App documentation
Merge pull request #3269 from dotta/issue/si-4287

Issue/si 4287
Merge pull request #3149 from soc/SI-7974

 Fix broken 'Symbol-handling code in CleanUp
SI-8128 Fix regression in extractors returning existentials

The advent of the named based pattern matcher brought with it
a change in the way we determine the type of the value in the
"match monad". We used to take the base type to `Option` or `Seq`
(guided by the method name in `unapply` vs `unapplySeq`), and
simply use the type argument.

Name-based patmat, instead, uses the result type of methods in the
type. For example, the element type of an Option-like extractor
result is given by the result type of the no-args `get` method.

This approach, however, swiftly runs aground when navigating the
existential atolls. Here's why:

    scala> class F[_]
    defined class F

    scala> val tp = typeOf[Some[F[X]] forSome { type X }]
    warning: there were 1 feature warning(s); re-run with -feature for details
    tp: $r.intp.global.Type = scala.this.Some[F[X]] forSome { type X }

    scala> tp.baseType(typeOf[Option[_]].typeSymbol).typeArgs.head
    res10: $r.intp.global.Type = F[X] forSome { type X }

    scala> tp.memberType(tp.member(nme.get)).finalResultType
    res11: $r.intp.global.Type = F[X]

`res10` corresponds to 2.10.x approach in `matchMonadResult`.
`res11` corresponds to the new approach in `resultOfMatchingMethod`.

The last result is not wrapped by the existential type. This results
in errors like (shown under -Ydebug to turn un accurate printing of
skolems):

    error: error during expansion of this match (this is a scalac bug).
    The underlying error was: type mismatch;
     found   : _$1&0 where type _$1&0
     required: _$1
      (0: Any) match {
               ^
    one error found

This commit addresses the regression in 2.10.x compatible extractors
by using the 2.10 approach for them.

The residual problem is shown in the enclosed pending test.
Merge pull request #13 from retronym/ticket/8128

SI-8128 Fix regression in extractors returning existentials
Merge pull request #3336 from OlivierBlanvillain/patch-1

Fix typo in documentation