go.tools/ssa: accommodate go/types changes to value,ok-mode inferred types.
go.tools/ssa: accommodate go/types changes to value,ok-mode inferred types.

The required changes were surprisingly minimal (I was hoping for a net
code deletion) because ssa is essentially doing its own type inference
for the three value,ok operators---and it continues to have to do so.
To see why, consider:

  var i interface{}; var ok bool
  i, ok := (map[string]string)(nil)[""]

Before, go/types inferred interface{} for the RHS of the assignment,
and now it infers (interface{}, bool), yet neither of these is what
ssa needs: it needs to know that the map values were strings so
that it can emit a lookup of the right type followed by a conversion
from string to interface{}.

TBR=gri
CC=golang-dev
https://codereview.appspot.com/11988044

t-yuki/go.tools.old,tmc/mirror-go.tools,tmc/mirror-go.tools,tmc/mirror-go.tools,t-yuki/go.tools.old,t-yuki/go.tools.old