title: template won't evaluate fields that are interface type as the underlying type
body: <p>Using golang <code>html/template</code> (same behavior with <code>text/template</code>). If I have a struct with a member that is of an interface type, I cannot access members of the underlying type (specifically trying to access fields that are on a struct that implements interface <code>InnerInterface</code> but is return via the <code>InnerInterface</code> interface type, not the struct type).</p>
  
  <p><a href="http://play.golang.org/p/ZH8wSK83oM" rel="nofollow">http://play.golang.org/p/ZH8wSK83oM</a></p>
  
  <pre><code>package main
  
  import "fmt"
  import "os"
  import "html/template"
  
  type InnerInterface interface{ InnerSomeMethod() }
  
  type MyInnerStruct struct { Title string }
  func (mis MyInnerStruct)InnerSomeMethod() { fmt.Println("Just to show we're satisfying the interface") }
  
  type MyOuterStruct struct { Inner InnerInterface }
  
  
  func main() {
  
      fmt.Println("Starting")
  
  
      arg := MyOuterStruct{Inner:MyInnerStruct{Title:"test1"}}
  
      err := template.Must(template.New("testtmpl").Parse("{{.Inner.Title}}")).Execute(os.Stdout, arg)
      if err != nil { panic(err) }
  
  }
  </code></pre>
  
  <p>Changing: <code>type MyOuterStruct struct { Inner InnerInterface }</code> to a totally generic interface, i.e. <code>type MyOuterStruct struct { Inner interface{} }</code> makes it render properly.  This leads me to believe that <code>interface{}</code> is treated specially by the rendering engine.</p>
  
  <p>Is there a better way to do this than to use <code>interface{}</code> whenever I want to be able to dynamically evaluate fields like this?</p>