fix(bitswap) implement, test concrete strategist
fix(bitswap) init wantlist

+ test that a partners wants are remembered by message receiver
style(bitswap) rename strategist -> strategy
style(bitswap) remove unnecessary interface
refac(exchange) bitswap -> exchange/bitswap

Move go-ipfs/bitswap package to go-ipfs/exchange/bitswap

* Delineates the difference between the generic exchange interface and
  implementations (eg. BitSwap protocol)

  Thus, the bitswap protocol can be refined without having to overthink
  how future exchanges will work. Aspects common to BitSwap and other
  exchanges can be extracted out to the exchange package in piecemeal.

  Future exchange implementations can be placed in sibling packages next
  to exchange/bitswap. (eg. exchange/multilateral)
refac(exchange) rename exchange.Interface to match golang conventions

examples:

    http://golang.org/pkg/container/heap/#Interface

    http://golang.org/pkg/net/#Interface

    http://golang.org/pkg/sort/#Interface
fix(bitswap) compiler errors

didn't run tests after the refactor. apologies.
test(exch:bs:strategy) test accounting consistency

> Why expose num bytes sent and received?

    Makes it easy to test consistency of the ledgers

> Got a better reason?

    Makes it possible to expose metrics to the people-facing API
style(ex:bitswap) put public methods at top
refac(exch:bitswap) always notify strategy when message sent
refac(ex:bs) remove local peer ref until shown to be necessary
chore(bitswap) remove unused const
refac(routing) replace timeout -> ctx

@jbenet oh hai there!
refac(bitswap) let adapter be created with nil delegate

yay deleting code.
refac(exchange) replace timeout -> context in API
fix(bitswap) use passed ctx
feat(exchange) pass ctx to exchange.HasBlock(...)
chore(exch, bitswap) misc trivial cleanup
refac(bitswap) extract const
feat(exch:bitswap) simply get method