graphqlbackend: Use an interface for searchResultResolver
Created by: keegancsmith
By just making each result type implement the To* methods, we can use interfaces instead of our own "tagged union type". This generally leads to much nicer code and a minor reduction in memory usage for large result sets.