refactor(bitswap:message) add wrapper for proto

This PR adds a wrapper for the Proto.

Design Goals:
* allow bitswap subsystem to deal with keys and blocks rather than strings and bytes
* centralize message packaging logic
* reduce conceptual overhead in large bitswap methods