Fix Iterator#copyToArray (fixes SI-6827).

As pointed out in #scala, when using a non-zero start it's possible
to get an ArrayIndexOutOfBoundsException due to an incorrect bounds
check. This patch fixes this, as well as another potential bounds
error, and adds test cases.

Incorporates some other suggestions by Som-Snytt to ensure that
callers will get useful error messages in cases where the start
parameter is wrong (negative or out-of-array-bounds).

Review by @som-snytt.
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
bind + argc specialization = 20x perf boost

Default logic of mirror construction, which gets triggered via
reflectField/reflectMethod/reflectConstructor, validates a lot of facts
about its arguments.

This takes quite a bit of time, which significantly degrades performance
of reflection-heavy applications. Proposed two changes provide an order
of magnitude performance boost to a simple app, which repeatedly invokes
the same method for different receiver instances.
a few performance improvements for toArray

First of all the typo I have made when migrating from manifests to tags.
`repr.getClass` in `WrappedArray` should read `array.getClass`.

Secondly manifests for Any, Object/AnyRef, AnyVal, Null and Nothing
now have their `newArray` methods overridden to avoid reflective overhead
of array instantiation.
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.