SI-6725 `f` interpolator now supports %n tokens

Currently the `f` interpolator supports format specifiers which
specify conversions for formatted arguments. However Java formatting
is not limited to argument-related conversions as explained in:
http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html#detail.

Conversions which don't correspond to any arguments are `%` (used to
emit verbatim `'%'` characters) and `n` (used to emit platform-specific
line separators). Of those only the former is supported, and this patch
fixes the oversight.
SI-7132 - don't discard Unit type in interpreter
SI-7240 fixes language feature lookup

As I discovered today, Definitions.getMember have a fallback clause,
which accounts for the phases which have inner classes flattened.

This fallback uses nme.flattenedName to compute a flattened name, but
unfortunately nme.flattenedName produces a TermName, not a TypeName,
which means that the fallback will commence search in a wrong namespace
with predictable results.

The commit also changes another usage of nme.flattenedName in a type name
context. That one was correctly converting a TermName result to TypeName,
so this is not a bugfix, but just a refactoring for the sake of being
consistent.
Merge pull request #2227 from mergeconflict/2.10.x-SI-7132

SI-7132 - don't discard Unit type in interpreter
Merge pull request #2222 from scalamacros/ticket/6725

SI-6725 `f` interpolator now supports %n tokens
Merge pull request #2230 from retronym/ticket/7233

SI-7233 Account for aliased imports in EtaExpansion / Erasure
Merge pull request #2234 from scalamacros/ticket/7240

SI-7240 fixes language feature lookup
[backport] Carve up Types.scala

Step one of a plan to bring some order and thread
safety to this neck of the woods.

More info:

  https://gist.github.com/retronym/5081754
  https://groups.google.com/forum/?fromgroups=#!topic/scala-internals/MOvmcnbyb_g

Note that the sub package is named 'tpe' and not 'Types' to avoid
problems on case insensitive file systems, given the existing
trait 'Types.'

============================================================

Some contortions were required to avoid binary compatibility
breakages with `scala.reflect.runtime` (ironically via the
SynchronizedXxx wrappers, which don't solve reflection safety,
and now slightly impede the real solution.)

MiMa fails when I run it locally in a different part of the
standard library:

    bc.run:
         [java] Found 1 binary incompatibiities (2 were filtered out)
         [java] =====================================================
         [java]  * synthetic method
         [java]    scala$xml$dtd$ElementValidator$$find$2(java.lang.String,scala.Option)Boolean
         [java]    in class scala.xml.dtd.ElementValidator's type has changed; was
         [java]    (java.lang.String,scala.Option)Boolean, is now:
         [java]    (java.lang.String,scala.collection.Seq)Boolean
         [java] Generated filter config definition

I'm not sure if whether to trust that, so we'll see how this commit
goes on Jenkins.