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.
reflect.makro => reflect.macros (Step I)

Builds a starr that uses stuff from scala.reflect.macros for macro activities.
Crucial makro thingies (such as makro.Context or makro.internal.macroImpl)
are temporarily left in place, because they are necessary for previous starr.

Macro tests will be fixed in a dedicated commit, so that they don't pollute
meaningful commits, making the life easy for reviewers and spelunkers.
evicts last traces of makro from our codebase

Removes the stubs left out to appease the old starr, fixes macro tests.
moves Expr from api to base

This is the first step in supporting serialization for exprs and type tags.

Generally speaking universes and mirrors cannot be serialized (even not taking
into account all the amount of scalac-specific transient stuff, java mirrors
use classloaders, which are not serializable).

Hence we can only serialize tree and type creators, and deserialize them into
the mirror we surely know will be there - the scala.reflect.basis.rootMirror.

To do that we need to have exprs in scala.reflect.base. Luckily all the trees
are already in base, we only need to move a single file to scala-library.jar.
Another good news is that reification logic is simplified, because we don't
have to special case exprs as being defined in ApiUniverseClass.
deploys a new starr that knows reify is a macro

reify has just been moved to base.Universe from api.Universe, so the fast track
in the old starr doesn't know about its existence. Therefore locker is built
without reify having the MACRO flag, thus it won't be able to expand reify.

Strictly speaking we don't need a new starr, because reify isn't used in scalac
so, even though locker won't recognize reify, quick will be fine.

However you don't know where a little sloppiness is going to bite you,
so I took time to rebuild and push the new starr.

It was as simple as "ant build starr.done" of the parent commit.
No file mingling was required.
first stab at serialization of exprs and tags

Instead of trying to serialize the entire universe and failing miserably
(which happens now), exprs and type tags will now serialize their creators
and deserialize into scala.reflect.basis.

Since creators produced by reification are not serializable right now,
serialization will crash. That's a small improvement over state of the art
functionality-wise, but it's a step forward robustness-wise.

Next step in this direction is generation of serialization code for creators.
Related issues: SI-5919 and SI-5908. Also see the discussion at scala-internals
http://groups.google.com/group/scala-internals/browse_thread/thread/ef63f8b5bd194c7c
Merge pull request #1039 from scalamacros/topic/ultimate-reflection-pull-request

Ultimate reflection pull request