fix: respect ctx on receive

@jbenet

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
style(blockservice) s/Remote/Exchange

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
feat(bitswap) make offline exchange query datastore

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
feat(blockstore) write cache

vendors hashicorp/golang-lru dependency. (Mozilla Public License, version 2.0)

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
feat(core) using WriteCached, cache Puts for exchange and blockservice

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
refactor(bitswap) consolidate HasBlock

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>

Conflicts:
	exchange/bitswap/bitswap.go
move public method to top of file

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
rm unnecessary concurrency

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
WIP feat(bitswap) add Request type

not sure how i feel about this yet

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
WIP refactor(bitswap)

not sure how i feel about this

premise: Before, HasBlock rate-limited `ipfs add largefile.dat`
operations. Now, HasBlock is performed

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>