ndn.cxx: Expressing interests and publishing data use event scheduling, instead of directly calling the callback

Also in this commit is extension, allowing expression of multiple
interests for the same name with different callbacks.  For example, if
user expresses two exactly the same interests, when data arrives or
interest times out, callbacks from the individual call will be invoked.

Another small change is that if interest is "collapsed" in ApiFace, it
is not further propagated to the NDN stack.
PyNDN: Fixing bug in Data, and adding compatibility tricks to Key and SignedInfo