refactor(bitswap) extract notifications

@jbenet 

Re-eval'd this PR...

The interface to the _network_ changes in branch `net`, but, internally, bitswap still needs to multiple callers on one key. Subscription is a natural way of modeling the behavior. The notifications package is a step in the right direction. Once merged with `net`, notifications will be used a bit differently, but the package itself will prove useful.