move synthetic case symbol detection to treeInfo

encapsulate creating synthetic case labels while we're at it
SI-5897 don't check sensicality in match

the pattern matching analysis should be more precise anyway
(don't warn twice)
SI-5930 don't warn about dead code in jump to case
use hasAllFlags to detect gadt skolems

trying to compromise between
- easy discovery of what special mix of flags identifies a gadt skolem
- ensuring that hasAllFlags is used and not hasFlag

keeping the secret combo close to the creator/detector methods instead of moving them to Flags
ideally, we'd allocate a new bit in Flags, but that's to invasive right now

these symbols are also relatively short-lived:
thet are created in adaptConstrPattern and removed at the end of typedCase
Promote unchecked warnings into being emitted by default.

To make that viable, suppression of unchecked warnings is now available
on a per-type-argument basis. The @unchecked annotation has hereby been
generalized beyond exhaustiveness to mean context-dependent "disable further
compiler checking on this entity." Example of new usage:

  def f(x: Any) = x match {
    case xs: List[String @unchecked] => xs.head   // no warning
    case xs: List[Int]               => xs.head   // unchecked warning
  }

It turns out -unchecked has been put to other noisy uses such as
the pattern matcher complaining about its budget like a careworn spouse.
This actually simplified the path forward: I left -unchecked in place
for that and general compatibility, so those warnings can be enabled
as before with -unchecked. The erasure warnings I turned into regular
warnings, subject to suppression by @unchecked.

Review by @odersky.
SI-5764 Honor -language:_

We now enable all language feature if -language:_ is given on the command line. Review by @paulp
Fix for SI-6084, type alias crasher.

"no need for pt.normalize here, is done in erasure"

ORLY? Review by @adriaanm.
Made worksheet output wrap around after custimizable # of output columns.
minor fixes scaladoc
SI-5732 members and derivatives now return Scope

Firstly this unifies the reflection API - now both decls and members
return Scope (not Scope and List[Symbol] as it were before).

Secondly this fixes SI-5732 without having to sort the result of members.
Type.members now returns Scope, a distinguished type, which has the
`sorted` method, which does the required sorting if necessary.

Also removes nonPrivateMembers and nonPrivateDeclarations to keep the API
minimalistic (as can be seen from their implementation in internal.Types
they are just members and decls with bridges and private members removed).
simplifies flag API

Flag ops now only include | and hasFlag,
flag bearer ops now only include flags and hasFlag.

These abstractions are enough to implement everything else,
so let's stick to them for the sake of minimalism.
moves most of symbol tests in API to descendants

Things like tpe.member("foo").isSkolem don't make much sense.
navigation between fields and accessors

This works around SI-5736 that's been deemed too risky to be fixed in 2.10.0.
A reflection newbie will be unlikely to acquire a field symbol from its name,
but the `accessed` method provides an easy way to navigate to it from a getter.
miscellaneous refinements of reflection API

1) Removed unnecessary (i.e. implementable with pattern matching) type APIs.
2) Renamed isHigherKinded to takesTypeArgs making it easier to understand.
2) typeParams and resultType have been moved from MethodType to MethodSymbol
   Strictly speaking they are superfluous, but they are used very often.
renames asType to toType and asXXXSymbol to asXXX

This renaming arguably makes the intent of `asType` more clear,
but more importantly it shaves 6 symbols off pervasive casts that
are required to anything meaningful with reflection API
(as in mirror.reflectMethod(tpe.member(newTermName("x")).asMethodSymbol)).
SI-5888 Mirrors now have sane toStrings

Adds informative toString for InstanceMirror, FieldMirror,
MethodMirror (for methods and constructors), ClassMirror and ModuleMirror.

Universe mirrors (e.g. JavaMirrors or compiler mirrors) already have good
toString methods that show their affiliation and/or classpaths.
more refinements of reflection API

Added a bunch of test methods to symbols to cover public flags:
(e.g. isPrivate, isFinal, isOverride, isImplicit, etc). I'd argue that
the API duplication w.r.t flag sets is trumped by unified interface
to tests and better encapsulation.

Also updated the API to be easier to understand after prior exposure
to Java or .NET reflection APIs:
1) Added typeParams to TypeSymbol and ClassSymbol.
2) Renamed MethodSymbol.resultType to returnType.
3) Removed the distinction between MethodSymbol.params vs MethodSymbol.allParams
   now we just have MethodSymbol.params: List[List[Symbol]].
prepares our macro defs for refactoring (Step I)

In our codebase we have a bunch of macros, and some of those macros
(namely, tag materialization macros and string context "f" formatter)
are used inside the compiler itself.

The logic of those macros is hardwired into starr's fast track,
so it doesn't rely on any of the subsystems of the macro engine
to be located, bound and executed.

But to trigger this logic we need to color these macros as macros, i.e. as
term symbols having the MACRO flag. Currently this works automatically,
because fast track macros (the same as regular macros) have their rhs
in the "macro ???" form. Having seen the "macro" keyword, the compiler knows
that the corresponding def declares a macro and sets the MACRO flag.

As the latest refactoring attempt has shown, the "macro" in "macro ???"
is unnecessary and might stand in the way of macro refactorings. After all
if some symbol is in the fast track registry, then it's definitely a macro.

Hence I'm changing the compiler to not need the "macro" keyword in declarations
of fast track macros anymore.
prepares our macro defs for refactoring (Step II)

Since the previous commit the compiler doesn't need any help
to find out that fast-tracked macros are macros. Hence I'm
replacing their RHSes with the universal ??? body.

This way macro definitions defined in scala (for example,
tag materialization macros or certain string formatters)
won't stand in the way of the changes to the macro system.
removes -Xmacro-(.*)-classpath compiler options

These options were meant to be used to bootstrap macros defined in our codebase
However we can bootstrap perfectly without any additional effort, because
library classpath classloader can delegate to tool classpath classloader to
load macro implementations from starr.

Since then (for several months) this functionality hasn't proven to be useful,
neither anyone on the mailing list or stackoverflow asked questions about it
(even despite it was explicitly mentioned in the "cannot load macro impl"
error message).

Hence I suggest that it is totally unnecessary and should be removed.