compiler: improve type caching for interface types
compiler: improve type caching for interface types

Add a cached to Interface_info_expression::do_type() so as to reuse
previously created interface types. This change reduces gccgo peak heap
usage when compiling the "fmt" package from around 16mb to around 10mb.

Fixes golang/go#16334

Change-Id: I001a16ea4bdd049268ce566ed226148c81953a4d
Reviewed-on: https://go-review.googlesource.com/24890
Reviewed-by: Ian Lance Taylor <87e9c6d529889242b7e184afb632328636553ab4@golang.org>

golang/gofrontend,golang/gofrontend,golang/gofrontend,golang/gofrontend