Ipfs Performance Tweaks

This PR will be the staging ground for ipfs performance fixes.
My list of hopeful features is:
- [ ] Blockservice agent
    - A blockservice agent would act to serialize access to the datastore, avoiding the lockdeath weve seen from leveldb
- [X] make `handleOutgoingMessage` not a goroutine
    - Or gate the number of goroutines with a semaphore
- [ ] make an agent for the muxers bandwidth accounting
- [ ] Batch up bitswap wantlist sends
    - send wanted blocks in order, N blocks at a time, this will make streaming more likely to happen
- [ ] msgio fixes
- [ ] take a look at levelDB's performance
- [ ] profile for number of active goroutines at any given time