Moves annotationError outside typedAnnotation

This refactoring allows everyone from the compiler, e.g. the macro engine
which expands annotation-emitting macros, to produce annotation errors.
adds Tree.nonEmpty

So that trees become consistent with isEmpty on lists and options.
showRaw can now print positions
the scanner is now less eager about deprecations

When healing braces it isn't very useful to report deprecation warnings,
especially since this process is just simple context-free skimming, which
can't know about what positions can accept what identifiers.
Adds extractors for TypeName, TermName and Modifiers

This change allows to pattern match over type names, term names and
modifiers. Otherwise it can be quite painful to match over complex trees
as each name or modifiers requires a guard.

This pull request also changes the name of default constructor for term
and type names i.e. TypeName(s) instead of newTermName(s). This is
shorter to type, more consistent with the rest of reflection api and
consistent with the way it will be pattern matched later on.
Changes reifier to use shorter name constructors
Changes tree pretty printer to use shorter name constructors
Changes reflection tests to use shorter name constructors
renames c.fresh to c.freshName
enclosures are now strongly typed and are no longer vals
macro expansions are now auto-duplicated

The fix still requires macro developers to be careful about sharing trees
by references, because attributed DefTrees will still bring trouble.

However this is an improvement, because it doesn't make matters worse
and automatically fixes situations similar to one in the test.

A much more thorough discussion with a number of open questions left:
http://groups.google.com/group/scala-internals/browse_thread/thread/492560d941b315cc
Eliminate allocations in ListBuffer.

++= on a linear sequence can be accomplished without
closure allocation.
Eliminate allocations in ClassfileParser.
Eliminating more allocations in the collections.
Eliminating allocations in Codec.
Eliminating allocations in typeDepth.
Eliminate allocations in Growable.
Eliminate allocations in TypeMap.
Eliminate allocations in CPSAnnotationChecker.
Eliminate allocations in BaseTypeSeqs.