Require an NSObject as a delegate.

So, Xcode didn't like me declaring performSelector:… as part of the
protocol without our class defining it itself. It's probably right.

AFAICT since it's not included in the NSObject protocol, our only option
is to require an NSObject instead of id as a delegate. Could be wrong.