SI-6677 Insert required cast in `new qual.foo.T`

Short version: we sometimes need to rewrite this as

    new T(qual.asInstanceOf[OwnerOfFoo].foo)

Long version:

`adaptMember` in Erasure performs a few tasks, among them:

1. adding an empty argument list to qualifiers in `new qual.T`
    for which `qual` is a val template member that has
    (post uncurry) a MethodType with an empty parameter list.

    The same rewriting was already applied in uncurry for such
    qualifiers appearing in other contexts, e.g. `qual.foo` was
    already rewritten to `qual().foo`.
2. casting, if necessary, the qualifier in `Select(qual, name)`
    to the type of owner of the symbol that this selection
    references.

    This can be neccesary with compound types:
     - some val class member has type `A with B`;
     - we instantiate `new ab.valMemberOfB.T`
     - we must pass `ab.valMemberOfB` to the constructor of `T`
       as the `$outer` pointer
     - we must cast `ab` to `B` before calling `valMemberOfB`.

    Failure to insert this cast can lead to a LinkageError or
    a VerifyError.

However, if 1) was performed, 2) was not.

The error is pretty easy to trigger with the new reflection
API:

    class Test {
      val cm: reflect.runtime.universe.Mirror
          = reflect.runtime.currentMirror
      def error {
        new cm.universe.Traverser // java.lang.VerifyError
      }

      def okay1 {
        val cm: reflect.runtime.universe.Mirror = reflect.runtime.currentMirror
        new cm.universe.Traverser
      }
    }

The fix applied here to `adaptMember` mirrors the existing
implementation of `adaptType`.
Refactoring of adaptMethod

Avoid the early return, and address micro-duplication
between adaptType and adaptMember.
SI-6673 fixes macro problems with eta expansions

Eta expansions previously caused the typer to disable macros. That was
done in order to detect eta expansion of macro defs and show the user
an appropriate error message.

Macros were disabled because to find out whether we're expanding
a macro def, we need to get its symbol, and to get a symbol of something
we need to typecheck that something. However typechecking automatically
expands macros, so, unless we disable macros, after a typecheck we won't
be able to analyze macro occurrences anymore.

Unfortunately this solution has a fatal flaw. By disabling macros we
not only prevent the eta-expandee from macro expanding, but also all
the subtrees of that eta-expandee (see SI-6673).

This commit adds a mechanism for fine-grained control over macro
expansion. Now it's possible to prohibit only the node, but not its
children from macro expanding.
adds comments to standard attachments
Fix for SI-6357, cycle with value classes.

Don't force the owner info.
findEntry implementation code more concise and DRYer.
SI-6695 Test case for fixed Array match bug
Merge pull request #1656 from jsuereth/fix/remove-future-either-method

Removing controversial `either` method from Futures API.
Merge pull request #1653 from retronym/ticket/6695

SI-6695 Test case for fixed Array match bug
Merge pull request #1645 from scalamacros/ticket/6673

SI-6673 fixes macro problems with eta expansions 
SI-6023 reify abstract vals

Type trees created by MethodSynthesis for abstract val getters carry symless originals,
which are unusable for reification purposes
(or the result of reification will be unhygienic).

To combat this, type trees for such getters are now created empty,
i.e. without any `tpe` set, just having an original assigned.
Subsequent `typedTypeTree` invocations fill in the `tpe` and
update the original to be symful.
Merge pull request #1660 from scalamacros/topic/6023

SI-6023 reify abstract vals
Fix for SI-6706, Symbol breakage under GC.

Ensure the map key and the String in the Symbol are the
same reference by removing the old key before updating the
map with the new key -> symbol relation.
Merge remote-tracking branch 'origin/2.10.0-wip' into merge-2.10.wip-x

# By Jason Zaugg (8) and others
# Via Adriaan Moors (6) and Josh Suereth (5)
* origin/2.10.0-wip:
  Removing controversial `either` method from Futures API.
  SI-6624 set info of case pattern binder to help find case field accessors
  Fixes SI-6628, Revert "Fix for view isEmpty."
  SI-6661 - Remove obsolete implicit parameter of scala.concurrent.promise method
  Fixes SI-6559 - StringContext not using passed in escape function.
  SI-6648 copyAttrs must preserve TypeTree#wasEmpty
  Fix raw string interpolator: string parts which were after the first argument were still escaped
  Update comment.
  SI-6646 `ident` or Ident is always new binding.
  SI-6440 Address regressions around MissingRequirementError
  Refine the message and triggering of MissingRequirementError.
  SI-6640 Better reporting of deficient classpaths.
  SI-6644 Account for varargs in extmethod forwarder
  SI-6646 Fix regression in for desugaring.
  Update tools/epfl-publish
Fix for SI-6687, wrong isVar logic.

Fields which back lazy vals need to be excluded via !isLazy
lest isVar return true.
Set symbol flags at creation.

All should prefer passing flags at symbol creation to mutating
the flags field after creation.
Mark pattern matcher synthetics as SYNTHETIC.

Flagging synthetics accurately is important to allow for
useful static analysis.
Merge pull request #1662 from paulp/issue/6706

Fix for SI-6706, Symbol breakage under GC.
Merge pull request #1643 from retronym/ticket/6677

SI-6677 Insert required cast in `new qual.foo.T`
Merge pull request #1647 from adriaanm/backport-1626-2.10.x

Fix for SI-6357, cycle with value classes.