Ensure proxy can deal with the case where the internal delegate is nilled out.
Improve locking, add new test case
Ensure YESDelegate still works if delegate is nil.
catch any protocols defined in superclasses
Allow inherited protocols
add property test case
Cover case where the proxy is already initialized with an empty delegate
Explicitly use a specific protocol for a delegate.

I think it's safe to assume that you always know the protocol of your
delegate. This means we don't need to *search* for method signatures,
we know exactly where to look for them.

Change-Id: I48e44509034274e6223ca5c0ec41fe5cb7a722ff
Merge pull request #3 from nevyn/master

Explicitly use a specific protocol for a delegate.
Update macro, style tweaks
update description
Merge remote-tracking branch 'or/master' into bugDelegateDiesFirst
Crash when delegate dies earlier than proxy when sent a required method.