Fix issues with phantom variables showing up in synthesis.

Previously if the choose was in the following context:

```
a match {
    case Cons(h, t) =>
    case _ =>
        choose()
}
```

its path condition would include:

```
!(a.isInstanceOf[Cons] && a.head == h && a.tail == t)
```

which causes mostly unconstrained variables `h` and `t` to show up in the
synthesis problem.