Fix interfaces so they actually work.

Really weird that Go can't figure out that indirectly composing the
same interface twice shouldn't cause method naming conflicts...