SI-8304 Allow volatile-typed Idents as stable ident patterns

As we did for `Select`-s in SI-6815 / fada1ef6.
Merge remote-tracking branch 'retronym/topic/8301' into topic/palladium0
tests for SI-8300

Highlights the dilemma with rich type members in the cake that no longer
exists. One used to have to choose between overloading or patmat/extmeth
friendliness, but couldn't have both. Thanks to retronym we can have it all.
reverses SI-6484

Unfortunately I have to revert b017629 because of SI-8303. There are projects
(e.g. slick) that use typeOf in annotations, which effectively means bye-bye.
makes sure compat._ provides full compatibility with 2.10.x

This is extremely important to enable cross-versioning Scala 2.10 codebases
against Scala 2.11 using Jason's trick with:

  // TODO 2.11 Remove this after dropping 2.10.x support.
  private object HasCompat { val compat = ??? }; import HasCompat._

  def impl(c: Context)(...): ... = {
    import c.universe._
    import compat._
    ...
  }