Add flag to disable withFilter pattern desugaring

This adds a flag called `-Zirrefutable-generator-patterns` which changes
desugaring of code like the following:

    for {
      (a, b) <- List(1 -> 'a', 2 -> 'b')
      (c, d) <- List(3 -> 'c', 4 -> 'd')
    } yield (a + c, b + d)

Which previously would turn into something like:

    List(1 -> 'a', 2 -> 'b').withFilter {
      case (a, b) => true
      case _ => false
    }.flatMap {
      case (a, b) =>
        List(3 -> 'c', 4 -> 'd').withFilter {
          case (c, d) => true
          case _ => false
        }.map {
          case (c, d) =>
            (a + c, b + d)
        }
    }

With this new flag, it only becomes:

    List(1 -> 'a', 2 -> 'b').flatMap {
      case (a, b) =>
        List(3 -> 'c', 4 -> 'd').map {
          case (c, d) =>
            (a + c, b + d)
        }
    }

Which creates a few benefits:

1. We don't have to do a useless call to withFilter
2. We can use patterns on things without withFilter
3. Things don't silently disappear when patterns are wrong
Warn on non-exhaustive for-comprehension patterns

We assume patterns are exhaustive when desugaring with
`-Zirrefutable-generator-patterns` but we should still emit a warning if
we think they might not be.
Add a test for -Zirrefutable-generator-patterns
List Typelevel options when -Z flag is given
Filter bincompat of ZirrefutableGeneratorPatterns
Merge branch '2.11.x-typelevel' into feature/irrefutable-generator-patterns

Conflicts:
	bincompat-forward.whitelist.conf
	src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
Merge pull request #1 from puffnfresh/feature/irrefutable-generator-patterns

Add flag to disable withFilter pattern desugaring