Support using an inherited interface in Hub<T>

#3311
I'm actually surprised that the above three calls work. I want to take a look at this before I merge this PR in.