Backport source changes in compiler/ from scala-2.11.

A compatibility trait, Compat210Component, exposes the 2.11 API
on top of the 2.10 API in a way that is source-compatible to
2.11 as well.

The idea is that we can completely share the source code of the
compiler between 2.10 and 2.11, and hence reduce the amount of
merge conflicts when merging master into 2.11.
Merge remote-tracking branch 'origin/unified-master' into unified-scala-2.11