SI-7895 Error reporting: avoid cascading, truncation

 - Enter error symbols for pattern binders in erroneous constructor patterns.
 - issue all errors, rather than just the first, when coming out of the Cone of Silence (aka `Typer#silent`)
 - typecheck args with `pt = ErrorType` even if the function is erroneous
 - avoid cascading errors in `(x => 0): ErrorType`.

In total:

```
% scalac-hash v2.11.0-M5 sandbox/test.scala
[info] v2.11.0-M5 => /Users/jason/usr/scala-v2.11.0-M5-0-gd6fe890
sandbox/test.scala:2: error: not found: value bong
  def booboo = bong + booble + bippity
               ^
sandbox/test.scala:3: error: not found: value Tuple
  Tuple(wizzle, (x, y) => (x, wozzle))
  ^
sandbox/test.scala:5: error: not found: value Shmist
    case Shmist(a, b) => a :: b :: Nil
         ^
sandbox/test.scala:5: error: not found: value a
    case Shmist(a, b) => a :: b :: Nil
                         ^
sandbox/test.scala:5: error: not found: value b
    case Shmist(a, b) => a :: b :: Nil
                              ^
sandbox/test.scala:6: error: not found: value Goop
    case Goop(a)   => s"$a $b"
         ^
sandbox/test.scala:6: error: not found: value a
    case Goop(a)   => s"$a $b"
                         ^
7 errors found

% qbin/scalac sandbox/test.scala
sandbox/test.scala:2: error: not found: value bong
  def booboo = bong + booble + bippity
               ^
sandbox/test.scala:2: error: not found: value booble
  def booboo = bong + booble + bippity
                      ^
sandbox/test.scala:2: error: not found: value bippity
  def booboo = bong + booble + bippity
                               ^
sandbox/test.scala:3: error: not found: value Tuple
  Tuple(wizzle, (x, y) => (x, wozzle))
  ^
sandbox/test.scala:3: error: not found: value wizzle
  Tuple(wizzle, (x, y) => (x, wozzle))
        ^
sandbox/test.scala:3: error: not found: value wozzle
  Tuple(wizzle, (x, y) => (x, wozzle))
                              ^
sandbox/test.scala:5: error: not found: value Shmist
    case Shmist(a, b) => a :: b :: Nil
         ^
sandbox/test.scala:6: error: not found: value Goop
    case Goop(a)   => s"$a $b"
         ^
sandbox/test.scala:6: error: not found: value b
    case Goop(a)   => s"$a $b"
                            ^
9 errors found
```

Review by @paulp