feat(net:message) get net package from e2430ae4279

fix(net:msg) use vendored imports
refactor(bitswap) leverage third-party pubsub lib

use a third-party pubsub library for internal communications

Insights:
* Within bitswap, the actors don't need anything more than simple pubsub
behavior. Wrapping and unwrapping messages proves unneccessary.

Changes:
* Simplifies the interface for both actors calling GetBlock and actors
receiving blocks on the network
* Leverages a well-tested third-party pubsub library

Design Goals:
* reduce complexity
* extract implementation details (wrapping and unwrapping data, etc)
from bitswap and let bitswap focus on composition of core algorithms
operations
refactor(bitswap) meslistener -> notifications
fix(bitswap:notifications) shutdown on bs.Halt()
style(bitswap:notifications) rm explicit returns
fix(bitswap:notifications) close chan on Publish
docs(bitswap:notifications) Subscribe
refactor(bitswap:notifications) move, rename

add interface
test(bitswap:notifications) check if chan is open
feat(bitswap:msg) add ToNet() method
feat(bitswap:msg) define interfaces
feat(bitswap:msg) impl FromSwarm method
refactor(bitswap:msg) add, use getters
refactor(bitswap:msg) move to package
feat(bs:net) impl service wrapper
style(bs:notific) let struct field be value

rather than pointer
fix(bs:net) add peer to receiver interface
refac(bs:msg) let msg.Blocks() return []blocks

discard erroneous values

wherever blocks cannot be nil, use value rather than pointer. only use
pointers when absolutely necessary.
feat(util) add u.Key().ToDatastore() method
refac(bs:msg) msg.Wantlist() returns []u.Key